本文實例為大家分享了python SMTP發送帶附件電子郵件的具體代碼,供大家參考,具體內容如下
可采用email模塊發送電子郵件附件。發送一個未知MIME類型的文件附件其基本思路如下:
1. 構造MIMEMultipart對象做為根容器
2. 構造MIMEText對象做為郵件顯示內容并附加到根容器
3. 構造MIMEBase對象做為文件附件內容并附加到根容器
a. 讀入文件內容并格式化
b. 設置附件頭
4. 設置根容器屬性
5. 得到格式化后的完整文本
6. 用smtp發送郵件
具體內容參見<programing python(3rd)> 14章第6節 “email: Parsing and Composing Mails”。發送一個未知MIME類型的文件附件實例代碼如下:
import smtplibimport email.MIMEMultipartimport email.MIMETextimport email.MIMEBaseimport os.path From = "sender address"To = "recipients"file_name = "file name" server = smtplib.SMTP("smtp server address")server.login("username","password") #僅smtp服務器需要驗證時 # 構造MIMEMultipart對象做為根容器main_msg = email.MIMEMultipart.MIMEMultipart() # 構造MIMEText對象做為郵件顯示內容并附加到根容器text_msg = email.MIMEText.MIMEText("this is a test text to text mime")main_msg.attach(text_msg) # 構造MIMEBase對象做為文件附件內容并附加到根容器contype = 'application/octet-stream'maintype, subtype = contype.split('/', 1) ## 讀入文件內容并格式化data = open(file_name, 'rb')file_msg = email.MIMEBase.MIMEBase(maintype, subtype)file_msg.set_payload(data.read( ))data.close( )email.Encoders.encode_base64(file_msg) ## 設置附件頭basename = os.path.basename(file_name)file_msg.add_header('Content-Disposition', 'attachment', filename = basename)main_msg.attach(file_msg) # 設置根容器屬性main_msg['From'] = Frommain_msg['To'] = Tomain_msg['Subject'] = "attach test "main_msg['Date'] = email.Utils.formatdate( ) # 得到格式化后的完整文本fullText = main_msg.as_string( ) # 用smtp發送郵件try: server.sendmail(From, To, fullText)finally: server.quit()
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。
新聞熱點
疑難解答