框架綜合實踐(9)--郵件傳送1
Python郵件傳送
郵件的三種傳送協議
- SMTP(simple mail transfer protocol):簡單郵件傳輸協議,SMTP認證,簡單說就是要求必須在提供了賬號和密碼之後才可以登入SMTP伺服器
- POP3:post office protocol郵局協議
- IMAP:internet mail access protocol互動式郵件存取協議
smtplib和email模組
Python傳送郵件需要掌握兩個模組,分別是 smtplib和email兩個模組,這兩個模組都是python自帶的,只要import即可使用。
email負責構造郵件,指的是郵箱頁面顯示的一些構造,如發件人,收件人,主題,正文,附件等。
smtplib負責傳送郵件,是一個傳送郵件的動作,連線郵箱伺服器,登入郵箱,傳送郵件(有發件人,收信人,郵件內容)
傳送郵件前準備
- 開啟SMTP服務
在使用前需要開啟SMTP服務,例如QQ郵箱開啟SMTP服務:
設定完成後,對應的服務地址:smtp.qq.com/pop.qq.com,,可使用者使用第三方應用(例如foxmail)上登入QQ賬號
2.郵箱登入授權碼
在指令碼內執行登入郵箱的操作,還需要獲取賬號的授權碼(授權碼的作用是用於登入第三方郵件客戶端的專用密碼)
簡訊傳送成功後,點選“我已傳送”,則會開啟生成授權碼頁面,如下:
指令碼結構
- 匯入傳送郵件模組、郵件內容、郵件標題
- 定義傳送郵箱伺服器
- 定義傳送郵箱的使用者名稱和授權碼
- 定義傳送的郵箱和接收的郵箱
- 定義郵件標題和內容
- 定義html郵件正文(整合標題變數和內容變數、傳送郵箱、接收郵箱)
- 組合服務地址和埠
- 向伺服器校驗身份
- 登入郵箱賬號
- 開始傳送郵件
指令碼正文(傳送給單個收件人)
指令碼
指令碼執行成功:
Smtplib基礎語法
- smtp.SMTP_SSL(host,port):host為伺服器的地址,port為埠,此處用的是ssl的埠465
- login(user,password):登入的使用者名稱和授權密碼
- sendmail((from_addr,to_addrs,msg,...):發件人、收件人、傳送訊息
- msg:傳送訊息:郵件內容。一般是msg.as_string():as_string()是將msg(MIMEText物件或者MIMEMultipart物件)變為str
- quit():用於結束SMTP會話
email常用模組
email模組下有包mime英文全稱為“Multipurpose Internet Mail Extensions”,即多用途網際網路郵件擴充套件。Mime包下常用的三個模組:text、image、multpart
參考資料:https://www.cnblogs.com/yufeihlf/p/5726619.html
指令碼正文(傳送給多個收件人)
指令碼
1.以列表的方式定義收件人列表:
receives=[‘收件人郵箱賬號01’,’收件人郵箱賬號02’]
- 多個收件人以““,”逗號進行分隔
msg[‘To’]=’,’.join(receives)
其他內容與傳送給單個收件人的指令碼一致
郵件正文(傳送附件)
部分指令碼
在原有的指令碼正文內增加“構造附件內容”、修改“構建傳送和接收資訊“模組指令碼
附件屬性說明
Content-Type:WEB伺服器告訴瀏覽器自己響應的物件的型別和字符集。例如:Content-Type: text/html; charset='gb2312'
檔案內容的型別對應表:http://tool.oschina.net/commons
Content-Disposition:作為對下載檔案的一個標識欄位彈出一個”檔案下載”的對話方塊,
inline表示瀏覽器內嵌顯示一個檔案,attachment表示會下載檔案;
注意,若Content-Type= application/octet-stream,則不論是Content-Disposition設定為inline還是attachment都是以附件下載的形式