在進行網絡編程時,發送郵件是經常會用到的一個功能。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
微信掃一掃
支付寶掃一掃