一、為什麼需要郵件發送模塊
在現代社會中,郵件已經成為人們經常使用的一種通信方式。在自動化的信息處理過程中,我們可能會需要使用Python來自動發送郵件。Python作為一種高效的腳本語言,有着極為豐富的第三方庫。郵件發送模塊是其中比較常用的一種。
Python郵件發送模塊可以幫助開發者快速構建郵件發送代碼。通過模塊提供的方法,可以方便地配置郵件發送的各種參數,如發件人、收件人、主題、正文、附件等。使開發者不必自己編寫複雜的SMTP協議,就能夠輕鬆實現郵件的發送。
二、Python郵件發送模塊有哪些
根據一個叫做PyPI的網站提供的數據,目前有很多Python郵件發送模塊可供選擇。其中比較常用的模塊有:smtplib、email、yagmail等。下面我們分別介紹這些模塊的安裝方法及基本用法。
三、smtplib模塊
首先介紹的是smtplib模塊。smtplib模塊具有最基本的郵件發送功能,可以發送純文本的郵件,也可以發送HTML格式的郵件。使用smtplib模塊進行郵件發送需要先安裝模塊。smtplib模塊是Python自帶的標準模塊,因此可以直接使用pip命令進行安裝。
# 安裝smtplib
pip install smtplib
接下來我們展示一個smtplib模塊發送郵件的代碼示例。此示例演示了如何發送一封純文本的郵件。
import smtplib
from email.mime.text import MIMEText
from email.header import Header
# 郵件發送方的地址和密碼(登陸SMTP服務器)
from_addr = 'xxx@163.com'
password = 'xxx'
# 郵件接收方的地址
to_addr = 'yyy@qq.com'
# 郵件 SMTP 服務器地址
smtp_server = 'smtp.163.com'
# 郵件正文內容
message = MIMEText('Python 郵件發送測試', 'plain', 'utf-8')
message['From'] = Header("發件人姓名", 'utf-8')
message['To'] = Header("收件人姓名", 'utf-8')
# 郵件主題
subject = 'Python SMTP 郵件測試'
message['Subject'] = Header(subject, 'utf-8')
# 開啟SSL加密,使用SMTP_SSL連接服務
smtpObj = smtplib.SMTP_SSL(smtp_server, 465)
# 登錄SMTP服務器
smtpObj.login(from_addr, password)
# 發送郵件
smtpObj.sendmail(from_addr, to_addr, message.as_string())
# 退出
smtpObj.quit()
在運行該示例代碼前,需要將from_addr、password、to_addr及smtp_server換成自己的發件人、密碼、收件人和SMTP服務器的地址。
四、email模塊
其次介紹的是email模塊。email模塊是Python標準庫之一,提供了更多高級的郵件發送功能,支持發送HTML郵件、帶附件的郵件,以及使用SMTP認證等。與smtplib模塊不同,email模塊不提供SMTP客戶端功能,它只負責構造郵件。
使用email模塊進行郵件發送也需要先安裝該模塊。同樣地,email模塊是Python自帶的標準模塊,因此可以直接使用pip命令進行安裝。
# 安裝email
pip install email
接下來我們展示一個email模塊發送郵件的代碼示例。此示例演示了如何發送一封帶附件的郵件。
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
# 郵件發送方的地址和密碼(登陸SMTP服務器)
from_addr = 'xxx@163.com'
password = 'xxx'
# 郵件接收方的地址
to_addr = 'yyy@qq.com'
# 郵件主題
subject = 'Python SMTP 郵件測試'
# 構造文本內容
text_msg = MIMEText('Python 郵件發送測試', 'plain', 'utf-8')
# 構造附件
report_file = 'test_report.txt'
with open(report_file, 'rb') as fp:
attach = MIMEApplication(fp.read())
attach.add_header('Content-Disposition', 'attachment', filename=report_file)
# 構造郵件主體
msg = MIMEMultipart()
msg.attach(text_msg)
msg.attach(attach)
# 郵件參數設置
msg['From'] = Header("發件人姓名", 'utf-8')
msg['To'] = Header("收件人姓名", 'utf-8')
msg['Subject'] = Header(subject, 'utf-8')
# 郵件 SMTP 服務器地址
smtp_server = 'smtp.163.com'
# 開啟SSL加密,使用SMTP_SSL連接服務
smtpObj = smtplib.SMTP_SSL(smtp_server, 465)
# 登錄SMTP服務器
smtpObj.login(from_addr, password)
# 發送郵件
smtpObj.sendmail(from_addr, to_addr, msg.as_string())
# 退出
smtpObj.quit()
在運行該示例代碼前,需要將from_addr、password、to_addr、subject、report_file及smtp_server換成自己的發件人、密碼、收件人、主題、附件和SMTP服務器的地址。
五、yagmail模塊
最後介紹的是yagmail模塊。yagmail模塊是一個Python郵件發送模塊,它使用簡單、易用,支持發送HTML郵件和帶附件的郵件。
yagmail模塊不是Python自帶的標準模塊,使用前需要先安裝。安裝yagmail模塊可以使用pip命令進行安裝。
# 安裝yagmail
pip install yagmail
下面我們展示一個yagmail模塊發送郵件的代碼示例。此示例演示了如何發送一封HTML格式的郵件。
import yagmail
# 郵件發送方的地址和密碼
from_addr = 'xxx@163.com'
password = 'xxx'
# 郵件接收方的地址
to_addr = 'yyy@qq.com'
# 郵件主題
subject = 'Python yagmail 郵件測試'
# 郵件正文
contents = ['Python HTML郵件發送測試
',
'',
'']
# 圖片附件
chart_file = 'chart.png'
chart_cid = 'chart'
# yagmail發送郵件
yag = yagmail.SMTP(from_addr, password)
yag.send(to_addr, subject, contents, chart_file, chart_cid=chart_cid)
yag.close()
在運行該示例代碼前,需要將from_addr、password、to_addr、subject、contents、chart_file換成自己的發件人、密碼、收件人、主題、正文、圖片附件的文件名。注意:該示例中,需要將chart圖片作為附件發送,並使用cid(Content-ID)指定附件的名稱,以便在郵件正文中引用。
六、總結
Python郵件發送模塊是Python開發中常用的一種模塊,它可以幫助開發者快速、方便地實現郵件發送的功能。Python的第三方庫很豐富,根據自己的需求,可以選擇適合的郵件發送模塊進行使用。在代碼的編寫過程中,需要根據實際情況進行郵件參數的設置,以保證郵件可以正常發送。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/307113.html