發(fā)送 HTML 格式郵件和帶附件的郵件
上節(jié)課我們說到針對不同場景發(fā)送郵件也有不同的類型,我們可以大致劃分為:
- 普通文本郵件;
- HTML 格式郵件;
- 帶附件的郵件。
我們已經(jīng)學(xué)習(xí)了如何使用 smtplib 和 email 模塊發(fā)送普通文本郵件,這節(jié)課我們來學(xué)習(xí)下如何發(fā)送 HTML 格式郵件和為郵件添加附件。
1. HTML 格式郵件介紹
所謂 HTML 格式的郵件,是指一類像網(wǎng)頁一樣的郵件,它包含有 HTML(超文本)鏈接,單擊鏈接可以轉(zhuǎn)到其他頁面,可以有圖片,聲音等。對比普通的文本郵件,HTML 格式的郵件,可以使得郵件內(nèi)容多姿多彩,除文字外,還能有聲音圖像鏈接等等。
通常在宣傳活動(dòng)、電商類等內(nèi)容上使用 HTML 格式郵件的情況較多,目的是為了更好的展示郵件內(nèi)容,以及和用戶有所交互。
2. 發(fā)送 HTML 格式郵件
發(fā)送郵件如下代碼所示:
import smtplib
from email.mime.text import MIMEText
host_server = 'smtp.qq.com' # 主機(jī)地址
# 發(fā)件人郵箱
sender = "xxx@qq.com"
# 發(fā)件人郵箱密碼、授權(quán)碼
code = "xlogucqphohxcabi"
# 收件人
user = "xxxx@163.com"
# 準(zhǔn)備郵件數(shù)據(jù)
# 郵件標(biāo)題
mail_title = "第二封郵件"
# 內(nèi)容
mail_content = """
<p>HTML格式郵件內(nèi)容</p>
<hr/>
<p><a >百度一下</a></p>
<ul>
<li>top1</li>
<li>top2</li>
</ul>
"""
# SMTP
smtp = smtplib.SMTP(host_server)
# 登錄
smtp.login(sender, code)
# 發(fā)送
msg = MIMEText(mail_content, 'html', 'utf-8')
msg['Subject'] = mail_title
msg['From'] = sender
msg['To'] = user
smtp.sendmail(sender, user, msg.as_string())
代碼解釋:在上一小發(fā)送普通郵件代碼的基礎(chǔ)上,將發(fā)送內(nèi)容由普通文本變更為 HTML 格式內(nèi)容,首先修改 mail_content 設(shè)置為 HTML 內(nèi)容,修改 MIMEText 構(gòu)建參數(shù)為 html,其他內(nèi)容不變。執(zhí)行完成后,打開收件郵件即可收到第二封郵件,如下圖所示。
3. 帶附件郵件介紹
電子郵件附件是跟電子郵件一同發(fā)出的附帶文件,附件包括聲音、視頻、文檔、圖片等一系列允許發(fā)送的文件(注意.exe 文件不允許發(fā)送)。帶附件的郵件具體附件位置如下圖所示。
4. 發(fā)送帶附件的郵件
發(fā)送郵件如下代碼所示:
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
host_server = 'smtp.qq.com' # 主機(jī)地址
# 發(fā)件人郵箱
sender = "389818529@qq.com"
# 發(fā)件人郵箱授權(quán)碼
code = "xlogucqphohxcabi"
# 收件人
user = "yanwydxf@163.com"
# 準(zhǔn)備郵件數(shù)據(jù)
# 郵件標(biāo)題
mail_title = "第三封郵件"
# 郵件內(nèi)容
mail_content = "具體請查看附件!"
# SMTP
smtp = smtplib.SMTP(host_server)
# 登錄
smtp.login(sender, code)
#構(gòu)建附件
attachment=MIMEApplication(open('newinfo.xlsx','rb').read())
#為附件添加一個(gè)標(biāo)題
attachment.add_header('Content-Disposition','attachment',filename='data.xlsx')
msg=MIMEMultipart()#構(gòu)建帶附件的實(shí)例
#郵件標(biāo)題
msg['Subject'] = mail_title
#發(fā)件人
msg['From'] = sender
#收件人
msg['To'] = user
# 發(fā)送
smtp.sendmail(sender, user, msg.as_string())
代碼解釋:在發(fā)送普通郵件的代碼的基礎(chǔ)上,導(dǎo)入 email 模塊下 MIMEMultipart 與 MIMEApplication 用于構(gòu)建附件。首先通過 MIMEApplication 封裝附件,newinfo.xlsx 為本地文件名稱, data.xlsx 為發(fā)送到對方郵箱后所顯示的名稱。通過 MIMEMultipart 構(gòu)建帶附件的實(shí)例,其他內(nèi)容不變。執(zhí)行完成后,打開收件郵件即可收到第三封郵件,如下圖所示。
5. 小結(jié)
本節(jié)課程我們主要學(xué)習(xí)了使用 smtplib 與 email 模塊實(shí)現(xiàn)帶附件的郵件發(fā)送。本節(jié)課程的重點(diǎn)如下:
- 了解 HTML 格式郵件的概念和作用;
- 掌握 HTML 格式郵件的發(fā)送;
- 了解帶附件的郵件概念和作用;
- 掌握帶附件的郵件的發(fā)送。