在進行網絡編程時,發送郵件是經常會用到的一個功能。Python中,smtplib和smtp是兩個常用的郵件發送庫,本文將從多個方面向大家詳細介紹這兩個庫的使用方法。
一、選擇郵件發送協議
在使用smtplib和smtp之前,需要先選擇一種郵件發送協議,在Python中支持的協議有SMTP、SMTP_SSL和ESMTP。其中SMTP和SMTP_SSL比較常用,SMTP_SSL是基於SSL加密和SMTP通信的。
# 使用SMTP協議 import smtplib smtp = smtplib.SMTP('smtp.server.com') # 使用SMTP_SSL協議 import smtplib smtp = smtplib.SMTP_SSL('smtp.server.com')
二、連接SMTP服務器
連接SMTP服務器的方法是通過login()函數進行的,要連接SMTP服務器,我們需要知道SMTP服務器地址和SMTP服務器的端口號。在連接SMTP服務器之前,我們需要使用賬號和密碼進行身份認證。
import smtplib # 連接服務器 smtp = smtplib.SMTP('smtp.server.com', 25) # 登錄 smtp.login('username', 'password')
三、發送郵件
當連接上SMTP服務器並認證通過後,我們就可以開始發送郵件了。在Python中,發送郵件涉及到郵件的編寫、發送方、接收方、主題、正文、附件等,下面是一個完整的郵件發送示例:
import smtplib from email.mime.text import MIMEText from email.header import Header # 發件人 sender = 'abc@server.com' # 收件人 receivers = ['123@server.com'] content = '這是一封Python發送的測試郵件' message = MIMEText(content, 'plain', 'utf-8') message['From'] = Header(sender, 'utf-8') message['To'] = Header(','.join(receivers), 'utf-8') message['Subject'] = Header('Python測試郵件', 'utf-8') try: smtpObj = smtplib.SMTP('smtp.server.com', 25) smtpObj.login('username', 'password') smtpObj.sendmail(sender, receivers, message.as_string()) print("郵件發送成功") except smtplib.SMTPException: print("郵件發送失敗")
四、添加附件
在郵件中添加附件可以讓郵件更加豐富多樣,下面是一個添加附件的示例:
import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.application import MIMEApplication from email.header import Header # 發件人 sender = 'abc@server.com' # 收件人 receivers = ['123@server.com'] message = MIMEMultipart() message['From'] = Header(sender, 'utf-8') message['To'] = Header(','.join(receivers), 'utf-8') message['Subject'] = Header('Python測試郵件', 'utf-8') # 郵件正文 content = '這是一封Python發送的測試郵件' text = MIMEText(content, 'plain', 'utf-8') message.attach(text) # 添加附件 with open('testfile.txt', 'rb') as f: attachment = MIMEApplication(f.read()) attachment.add_header('content-disposition', 'attachment', filename='testfile.txt') message.attach(attachment) try: smtpObj = smtplib.SMTP('smtp.server.com', 25) smtpObj.login('username', 'password') smtpObj.sendmail(sender, receivers, message.as_string()) print("郵件發送成功") except smtplib.SMTPException: print("郵件發送失敗")
五、關閉連接
當完成郵件的發送後,我們需要關閉SMTP連接,釋放資源。
import smtplib smtpObj.quit()
到此為止,我們已經完成了smtplib和smtp庫的詳細介紹。通過本文的學習,相信讀者們已經對Python發郵件的方法有了更深入的認識。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/200689.html