使用 smtplib 發送普通郵件
針對不同場景發送郵件也有不同的類型,我們可以大致劃分為:
- 普通文本郵件;
- HTML 格式郵件;
- 帶附件的郵件。
本小節將介紹第一種情況普通文本郵件的發送。
1. 什么是 pop3 和 smtp?
1.1 pop3
POP3 是 Post Office Protocol 3 的簡稱,即郵局協議的第 3 個版本,它規定怎樣將個人計算機連接到 Internet 的郵件服務器和下載電子郵件的電子協議。它是因特網電子郵件的第一個離線協議標準,POP3 允許用戶從服務器上把郵件存儲到本地主機(即自己的計算機)上,同時刪除保存在郵件服務器上的郵件,而 POP3 服務器則是遵循 POP3 協議的接收郵件服務器,用來接收電子郵件的。
1.2 smtp
SMTP 的全稱是 “Simple Mail Transfer Protocol”,即簡單郵件傳輸協議。它是一組用于從源地址到目的地址傳輸郵件的規范,通過它來控制郵件的中轉方式。SMTP 協議屬于 TCP/IP 協議簇,它幫助每臺計算機在發送或中轉信件時找到下一個目的地。SMTP 服務器就是遵循 SMTP 協議的發送郵件服務器。
2. 郵箱 pop3/smtp 服務配置
SMTP 認證,簡單地說就是要求必須在提供了賬戶名和密碼之后才可以登錄 SMTP 服務器,這就使得那些垃圾郵件的散播者無可乘之機。增加 SMTP 認證的目的是為了使用戶避免受到垃圾郵件的侵擾。目前許多郵箱為了保障用戶郵箱的安全,都默認都關閉了 POP3/SMTP/IMAP 的開關,在用戶需要這些功能時請 “開啟”。 本小節中以 QQ 郵箱為例進行 pop3/smtp 服務配置,登錄成功后,進入【設置】->【賬戶】,在【POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV 服務】處,開啟【POP3/SMTP 服務】,如下圖所示:
保存好授權碼后,點擊確定按鈕,即開啟 POP3/SMTP 服務,如下圖所示:
3. 發送郵件
發送郵件如下代碼所示:
#導入stmplib與email模塊
import smtplib
from email.mime.text import MIMEText
host_server='smtp.qq.com' #初始化主機地址
#發件人郵箱
sender="[email protected]"
#發件人郵箱授權碼
code="xlogucqphohxcabi"
#收件人郵箱
user="[email protected]"
#準備郵件數據
#郵件標題
mail_title="第一封郵件"
#郵件發送的內容
mail_content="測試內容"
#SMTP
smtp=smtplib.SMTP(host_server)
#登錄
smtp.login(sender,code)
#構建郵件主體內容
msg = MIMEText(mail_content, 'plain', 'utf-8')
msg['Subject']=mail_title
msg['From']=sender
msg['To']=user
#發送郵件
smtp.sendmail(sender,user,msg.as_string())
代碼解釋:首先分別 import smtplib 和 email 模塊,利用 email 模塊構建郵件數據,包括郵件標題、內容、發件人、收件人。郵件數據準備就緒后,通過 smtplib 模塊構建 smtp 對象,將收件人、發件人、郵件內容傳遞進去,調用 sendmail () 方法實現郵件發送,執行完成后,打開收件郵件即可收到第一封郵件,如下圖所示:
3. 小結
本節課程我們主要學習了使用 smtplib 與 email 模塊實現普通文本郵件發送。本節課程的重點如下:
- 掌握郵箱 pop3/smtp 服務配置;
- 掌握普通文本郵件的發送;