使用Python實現自動化郵件發送,可以讓你擺脫繁瑣的重復性業務,可以節省非常多的時間。
Python有兩個內置庫:smtplib
和email
,能夠實現郵件功能,smtplib
庫負責發送郵件,email
庫負責構造郵件格式和內容。
郵件發送需要遵守SMTP協議,Python內置對SMTP的支持,可以發送純文本郵件、HTML郵件以及帶附件的郵件。
1、先導入相關的庫和方法
import smtplib
import email
# 負責構造文本
from email.mime.text import MIMEText
# 負責構造圖片
from email.mime.image import MIMEImage
# 負責將多個對象集合起來
from email.mime.multipart import MIMEMultipart
from email.header import Header
2、設置郵箱域名、發件人郵箱、郵箱授權碼、收件人郵箱
# SMTP服務器,這里使用163郵箱
mail_host = "smtp.163.com"
# 發件人郵箱
mail_sender = "******@163.com"
# 郵箱授權碼,注意這里不是郵箱密碼,如何獲取郵箱授權碼,請看本文最后教程
mail_license = "********"
# 收件人郵箱,可以為多個收件人
mail_receivers = ["******@qq.com","******@outlook.com"]
3、構建MIMEMultipart對象代表郵件本身,可以往里面添加文本、圖片、附件等
mm = MIMEMultipart('related')
4、設置郵件頭部內容
# 郵件主題
subject_content = """Python郵件測試"""
# 設置發送者,注意嚴格遵守格式,里面郵箱為發件人郵箱
mm["From"] = "sender_name<******@163.com>"
# 設置接受者,注意嚴格遵守格式,里面郵箱為接受者郵箱
mm["To"] = "receiver_1_name<******@qq.com>,receiver_2_name<******@outlook.com>"
# 設置郵件主題
mm["Subject"] = Header(subject_content,'utf-8')
5、添加正文文本
# 郵件正文內容
body_content = """你好,這是一個測試郵件!"""
# 構造文本,參數1:正文內容,參數2:文本格式,參數3:編碼方式
message_text = MIMEText(body_content,"plain","utf-8")
# 向MIMEMultipart對象中添加文本對象
mm.attach(message_text)
6、添加圖片
# 二進制讀取圖片
image_data = open('a.jpg','rb')
# 設置讀取獲取的二進制數據
message_image = MIMEImage(image_data.read())
# 關閉剛才打開的文件
image_data.close()
# 添加圖片文件到郵件信息當中去
mm.attach(message_image)
7、添加附件(excel表格)
# 構造附件
atta = MIMEText(open('sample.xlsx', 'rb').read(), 'base64', 'utf-8')
# 設置附件信息
atta["Content-Disposition"] = 'attachment; filename="sample.xlsx"'
# 添加附件到郵件信息當中去
mm.attach(atta)
8、發送郵件
# 創建SMTP對象
stp = smtplib.SMTP()
# 設置發件人郵箱的域名和端口,端口地址為25
stp.connect(mail_host, 25)
# set_debuglevel(1)可以打印出和SMTP服務器交互的所有信息
stp.set_debuglevel(1)
# 登錄郵箱,傳遞參數1:郵箱地址,參數2:郵箱授權碼
stp.login(mail_sender,mail_license)
# 發送郵件,傳遞參數1:發件人郵箱地址,參數2:收件人郵箱地址,參數3:把郵件內容格式改為str
stp.sendmail(mail_sender, mail_receivers, mm.as_string())
print("郵件發送成功")
# 關閉SMTP對象
stp.quit()
結果
看看郵箱接收到來自python的郵件長什么樣:
附:如何設置郵箱授權碼
本文測試發送郵箱為163郵箱,可按如下步驟獲取郵箱授權碼
第一步:登陸網頁163郵箱,找到設置並打開
第二步:點擊設置中的客戶端授權密碼
第三步:點擊開啟,並按提示設置你的授權密碼