1. 程式人生 > >Python+ SMTP 郵件學習筆記

Python+ SMTP 郵件學習筆記

更新日誌

版本號 更新日期 更新人 更新內容
V1.0 2018.11.13 李昊哲 初稿

文件說明

該文件用於說明網上各種 Python + SMTP 傳送郵件教程學習彙總說明。

文件內容

不多廢話,直接上程式碼,都有註釋。

# coding=utf-8
from email.mime.text import MIMEText # 傳送文字
from email.mime.image import MIMEImage # 傳送圖片
from email.mime.multipart import MIMEMultipart # 可文字、圖片結合
from email.utils import
formataddr # 格式化地址,如發件人資訊 import smtplib # 發郵件需要的包 from constant import LOGO_DATA # 這個是因為我用 pyinstaller 封裝時不能封裝圖片,我就把圖片轉為二進位制放在 constant 檔案裡了。 def fn_send__email(to_address): from_address = '你的郵箱地址' password = '你的密碼' # 若設定了第三方客戶端登入密碼,則使用該密碼 smtp_server = 'smtp.exmail.qq.com'
# 視具體郵箱而定,這裡是騰訊企業郵箱 msg = MIMEMultipart() # 我傳送給 outlook 的圖片總會被當做附件,具體原因我沒搞懂。這裡判斷下,如果是 outlook,不傳送圖片。 if to_address[to_address.index('@'):] != '@outlook.com': # ~ with open('logo.png', 'rb') as pic: # ~ LOGO_DATA = pic.read() # 新增圖片 img = MIMEImage(
LOGO_DATA) # 給圖片編號,先當做附件加入,在後面的 html 程式碼中引用 img.add_header('Content-ID', '<0>') msg.attach(img) pic_info = '<img src="cid:0"><br>' else: pic_info = '' # 文字部分,自定義。<hr> 標籤定義了一個分割線,模擬郵箱簽名上的藍線。 text = MIMEText('<html><body><p style="font-size:12pt; color:rgb(36,39,40);font-family:微軟雅黑">\ 你的郵件內容!<hr style="border:none;border-top:1pt solid rgb(181, 196, 223)" align="left" width="168pt"/>\ {}\ XXX 謹啟<br>\ (+86) 10086<br></p>\ </body></html>'.format(pic_info), 'html', 'utf-8') msg.attach(text) # 定義郵件內容的發件人、收件人,主題 msg['From'] = formataddr(['顯示的發件人名字', '你的郵箱地址']) msg['To'] = to_address msg['Subject'] = '郵件主題' # 這裡用 25 號埠是因為郵箱設定裡推薦的埠號總連不上 # ~ server = smtplib.SMTP(smtp_server, 465) server = smtplib.SMTP(smtp_server, 25) # 建立安全連線 server.starttls() server.set_debuglevel(1) server.login(from_address, password) server.sendmail(from_address, [to_address], msg.as_string()) server.quit() # ~ to_address = '[email protected]' # ~ fn_send_email(to_address)