Python使用SMTP模塊、email模塊發送郵件

1、smtplib模塊:

主要經過SMTP類與郵件系統進行交互。使用方法以下:html

1.實例化一個SMTP對象:

  s = smtplib.SMTP(郵件服務地址,端口號)python

  s = smtplib.SMTP_SSL(郵件服務地址,端口號)app

2.登錄郵件,權限驗證:

  s.login(用戶名,密碼)post

3.發送郵件:

  s.sendmail(發件人郵箱,收件人郵箱,發送內容)測試

4.斷開鏈接:

  s.close()編碼

 

2、email模塊:

  email模塊:支持發送的郵件內容爲純文本、HTML內容、圖片、附件。email模塊中有幾大類來針對不一樣的郵件內容形式,經常使用以下:spa

  MIMEText:(MIME媒體類型)內容形式爲純文本、HTML頁面。debug

  MIMEImage:內容形式爲圖片。code

  MIMEMultupart:多形式組合,可包含文本和附件。htm

 

每一類對應的導入方式:

  from email.mime.text import MIMEText

  from email.mime.image import MIMEImage

  from email.mime.multipart import MIMEMultipart

 

3、MIMEText:

  MIMEText(msg,type,chartset)

  msg:文本內容

  type:文本類型默認爲plain(純文本)

   發送HTML格式的時候,修改成html,但同時要求msg的內容也是html的格式。

  chartset:文本編碼,中文爲「utf-8」

  # 構造TEXT格式的消息

  msg = MIMEText("hello.text","plain","utf-8")

  msg["Subject"] = "xxxxx"

  msg["From"] = "xxxx"

  msg["To"] = "xxxx"

  #發送以上構造的郵件內容要使用as_string將構造的郵件內容轉換爲string形式。

  s.sendmail("xxx","xxx",msg.as_string)

 

4、MIMEImage、MIMEMultipart:

  msg = MIMEMultipart()

  #實例化一個文本對象 

  msg_sub = MIMEText("hello.text","plain","utf-8")

  #將text消息添加到MIMEMultipart中,做爲郵件正文。

  msg.attach(msg_sub)

 

  #圖片做爲附件

  import os

  img_datas = open(os.getcwd()+ "/reports/xxxx.png","rb").read()

  msg_img = MIMEImage(img_data)

  msg_img.add_header('Content-Disposition','attachment', filename = "xxxx.png" )

  msg_img.add_header('Content-ID','<0>')

  #將圖片添加到MIMEMultiplart中,做爲附件發送。

  msg.attach(mag_img)

源代碼以下:

發送文本郵件: 

 1 import smtplib  2 from email.mime.text import MIMEText  3 
 4 sender = 'xxxx@qq.com'   #發送人郵箱
 5 passwd = 'lkugmgywydhfff' #發送人郵箱受權碼
 6 receivers = 'xxxx@qq.com' #收件人郵箱
 7 
 8 subject = 'python發郵件測試' #主題
 9 content = '這是我使用python smtplib模塊和email模塊自動發送的郵件'    #正文
10 
11 msg = MIMEText(content,'plain','utf-8') 12 msg['Subject'] = subject 13 msg['From'] = sender 14 msg['TO'] = receivers 15 
16 try: 17     s = smtplib.SMTP_SSL('smtp.qq.com',465) 18  s.login(sender,passwd) 19  s.sendmail(sender,receivers,msg.as_string()) 20     print('發送成功') 21 
22 except Exception: 23     print('發送失敗')

 

 發送HTML郵件: 

 1 import smtplib  2 from email.mime.text import MIMEText  3 from email.header import Header  4 
 5 sender = 'xxxx@qq.com' #發件郵箱
 6 passwd = 'lkugmgywydhfff' #發送人郵箱受權碼
 7 receivers = 'xxxx@qq.com'   #收件郵箱
 8 
 9 subject = 'python發郵Html郵件測試' #主題
10 
11 content = """ #內容,HTML格式 12 <p>Python 郵件發送測試...</p> 13 <p><a href="http://www.baidu.com">這是一個連接</a></p> 14 """
15 
16 msg = MIMEText(content,'html','utf-8') 17 # msg['Subject'] = subject
18 msg['Subject'] = Header(subject,'utf-8') 19 # msg['From'] = sender
20 msg['From'] = Header('大傻子','utf-8') 21 # msg['To'] = receivers
22 msg['To'] = Header('二愣子','utf-8') 23 try: 24     s = smtplib.SMTP_SSL('smtp.qq.com',465) 25  s.login(sender,passwd) 26  s.sendmail(sender,receivers,msg.as_string()) 27     print('Send Success') 28 
29 except: 30     print('Send Failure')

  

發送圖片郵件: 

 1 import smtplib  2 from email.mime.image import MIMEImage  3 from email.mime.text import MIMEText  4 from email.mime.multipart import MIMEMultipart  5 
 6 sender = 'xxxx@qq.com'
 7 passwd = 'lkugmgywydhfff'
 8 receivers = 'xxxx@qq.com'
 9 subject = 'python發郵帶img的郵件測試' #主題
10 
11 # 建立一個帶附件的實例
12 msg = MIMEMultipart() 13 msg['Subject'] = subject 14 msg['From'] = sender 15 msg['To'] = receivers 16 
17 # 建立正文
18 msg.attach(MIMEText('使用python smtplib模塊和email模塊自動發送郵件測試','plain','utf-8')) 19 
20 # 建立圖片附件
21 import os 22 img_file = open(os.getcwd()+"/a4.jpg",'rb').read() 23 msg_img = MIMEImage(img_file) 24 msg_img.add_header('Content-Disposition','attachment', filename = "a4.jpg") 25 msg_img.add_header('Content-ID', '<0>') 26 msg.attach(msg_img) 27 
28 try: 29     s = smtplib.SMTP_SSL('smtp.qq.com',465) 30     s.set_debuglevel(1) #輸出發送郵件詳細過程
31  s.login(sender,passwd) 32  s.sendmail(sender,receivers,msg.as_string()) 33     print('Send Succese') 34 
35 except: 36     print('Send Failure')

  

發送帶附件的郵件:

 1 import smtplib  2 from email.mime.text import MIMEText  3 from email.mime.multipart import MIMEMultipart  4 from email.header import Header  5 
 6 sender = 'xxxxxx@qq.com'  #發件郵箱
 7 passwd = 'lkugmgywydhfff'  # 郵箱受權碼
 8 receivers = 'xxxxxx@qq.com'  #收件郵箱
 9 
10 subject = 'python髮帶附件的郵件測試' #主題
11 # 建立一個帶附件的實例
12 msg = MIMEMultipart() 13 msg['Subject'] = subject 14 msg['From'] = sender 15 msg['To'] = receivers 16 
17 #建立正文,將文本文件添加到MIMEMultipart中
18 msg.attach(MIMEText('使用python smtplib模塊和email模塊自動發送郵件測試','plain','utf-8')) 19 
20 #構造附件1,傳送當前目錄下 文件
21 att1 = MIMEText(open('testdata.xlsx','rb').read(),'base64','utf-8') # rb以二進制方式讀取
22 # att1["Content-Type"] = 'application/octet-stream'
23 # filename爲附件名稱,能夠任意寫,寫什麼名字,郵件中顯示什麼名字
24 att1["Content-Disposition"] = 'attachment; filename = "testdata.xlsx" '
25 #將附件添加到MIMEMultipart中
26 msg.attach(att1) 27 
28 #構造附件2
29 att2 = MIMEText(open('db.cfg','rb').read(),'base64','utf-8') 30 # att2["Content-Type"] = 'application/octet-stream'
31 att2["Content-Disposition"] = 'attachment; filename = "db.cfg" '
32 #將附件添加到MIMEMultipart中
33 msg.attach(att2) 34 
35 try: 36     s = smtplib.SMTP_SSL('smtp.qq.com',465) 37     s.set_debuglevel(1) #輸出發送郵件詳細過程
38  s.login(sender,passwd) 39  s.sendmail(sender,receivers,msg.as_string()) 40     print('Send Succese') 41 
42 except: 43     print('Send Failure')
相關文章
相關標籤/搜索