1. 程式人生 > >框架綜合實踐(9)--郵件傳送1

框架綜合實踐(9)--郵件傳送1

Python郵件傳送

郵件的三種傳送協議

  1. SMTP(simple mail transfer protocol):簡單郵件傳輸協議,SMTP認證,簡單說就是要求必須在提供了賬號和密碼之後才可以登入SMTP伺服器
  2. POP3:post office protocol郵局協議
  3. IMAP:internet mail access protocol互動式郵件存取協議

smtplib和email模組

Python傳送郵件需要掌握兩個模組,分別是 smtplib和email兩個模組,這兩個模組都是python自帶的,只要import即可使用。

email負責構造郵件,指的是郵箱頁面顯示的一些構造,如發件人,收件人,主題,正文,附件等。

smtplib負責傳送郵件,是一個傳送郵件的動作,連線郵箱伺服器,登入郵箱,傳送郵件(有發件人,收信人,郵件內容)

傳送郵件前準備

  1. 開啟SMTP服務

在使用前需要開啟SMTP服務,例如QQ郵箱開啟SMTP服務:

設定完成後,對應的服務地址:smtp.qq.com/pop.qq.com,,可使用者使用第三方應用(例如foxmail)上登入QQ賬號

2.郵箱登入授權碼

在指令碼內執行登入郵箱的操作,還需要獲取賬號的授權碼(授權碼的作用是用於登入第三方郵件客戶端的專用密碼)

簡訊傳送成功後,點選“我已傳送”,則會開啟生成授權碼頁面,如下:

 

指令碼結構

  1. 匯入傳送郵件模組、郵件內容、郵件標題
  2. 定義傳送郵箱伺服器
  3. 定義傳送郵箱的使用者名稱和授權碼
  4. 定義傳送的郵箱和接收的郵箱
  5. 定義郵件標題和內容
  6. 定義html郵件正文(整合標題變數和內容變數、傳送郵箱、接收郵箱)
  7. 組合服務地址和埠
  8. 向伺服器校驗身份
  9. 登入郵箱賬號
  10. 開始傳送郵件

指令碼正文(傳送給單個收件人)

指令碼

 

指令碼執行成功:

Smtplib基礎語法

  1. smtp.SMTP_SSL(host,port):host為伺服器的地址,port為埠,此處用的是ssl的埠465
  2. login(user,password):登入的使用者名稱和授權密碼
  3. sendmail((from_addr,to_addrs,msg,...):發件人、收件人、傳送訊息
  4. msg:傳送訊息:郵件內容。一般是msg.as_string():as_string()是將msg(MIMEText物件或者MIMEMultipart物件)變為str
  5. 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’]

  1. 多個收件人以““,”逗號進行分隔

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都是以附件下載的形式