1. 程式人生 > 實用技巧 >python實現自動發郵件

python實現自動發郵件

  Python有兩個內建庫:smtplib和email,可以實現郵件功能,無需下載,直接import匯入。

  • smtplib庫負責傳送郵件
  • Email庫負責構造郵件格式和內容

  郵件傳送需要遵守SMTP協議,Python內建對SMTP的支援,可以傳送純文字郵件、HTML郵件以及帶附件的郵件。

實驗程式碼

 1 #Part 1:匯入相關的庫和方法
 2 #匯入兩個內建庫
 3 import smtplib
 4 import email
 5 #負責構造文字
 6 from email.mime.text import MIMEText
 7 #負責構造圖片
 8 from email.mime.image import
MIMEImage 9 #負責將多個物件集合起來 10 from email.mime.multipart import MIMEMultipart 11 from email.header import Header 12 13 #Part 2:設定郵箱域名,發件人郵箱,郵箱授權碼,收件人郵箱 14 #SMTP伺服器,這裡使用163郵箱 15 mail_host="smtp.163.com" 16 #發件人郵箱 17 mail_sender="**********@163.com" 18 #郵箱授權碼。各種郵箱的授權碼皆可自行獲得 19 mail_license="********" 20
mail_receivers=["**********@gmail.com"] 21 22 #Part 3:構建MIMEMultipart物件代表郵件本身,可以往裡面新增文字、圖片、附件等 23 mm=MIMEMultipart('related') 24 25 #Part 4:設定郵件頭部內容 26 #郵件主題 27 subject_content="python郵件測試" 28 #設定傳送者,嚴格遵守格式 29 mm["From"]="sender_name<********@163.com>" 30 #設定接收者,嚴格遵守格式 31 mm["To"]="receiver_name<*********@gmail.com>
" 32 #設定郵件主題 33 mm["Subject"]=Header(subject_content,'utf-8') 34 35 #Part 5:新增正文文字 36 # 郵件正文內容 37 body_content = "你好,這是一個測試郵件!" 38 # 構造文字,引數1:正文內容,引數2:文字格式,引數3:編碼方式 39 message_text = MIMEText(body_content,"plain","utf-8") 40 # 向MIMEMultipart物件中新增文字物件 41 mm.attach(message_text) 42 43 #Part 6:新增圖片 44 # 二進位制讀取圖片 45 image_data = open('a.jpg','rb') 46 # 設定讀取獲取的二進位制資料 47 message_image = MIMEImage(image_data.read()) 48 # 關閉剛才開啟的檔案 49 image_data.close() 50 # 新增圖片檔案到郵件資訊當中去 51 mm.attach(message_image) 52 53 #Part 7:新增附件 54 # 構造附件 55 atta = MIMEText(open('sample.xlsx', 'rb').read(), 'base64', 'utf-8') 56 # 設定附件資訊 57 atta["Content-Disposition"] = 'attachment; filename="sample.xlsx"' 58 # 新增附件到郵件資訊當中去 59 mm.attach(atta) 60 61 #Part 8:傳送郵件 62 # 建立SMTP物件 63 stp = smtplib.SMTP() 64 # 設定發件人郵箱的域名和埠,埠地址為25 65 stp.connect(mail_host, 25) 66 # set_debuglevel(1)可以打印出和SMTP伺服器互動的所有資訊 67 stp.set_debuglevel(1) 68 # 登入郵箱,傳遞引數1:郵箱地址,引數2:郵箱授權碼 69 stp.login(mail_sender,mail_license) 70 # 傳送郵件,傳遞引數1:發件人郵箱地址,引數2:收件人郵箱地址,引數3:把郵件內容格式改為str 71 stp.sendmail(mail_sender, mail_receivers, mm.as_string()) 72 print("郵件傳送成功") 73 # 關閉SMTP物件 74 stp.quit()

遇到的問題:

smtp出現(500, b'Error: bad syntax')

解決辦法:

https://blog.csdn.net/weixin_38428827/article/details/104223207

執行成功: