天天看點

python3發送郵件_Python3使用SMTP發送帶附件郵件

一、設定開啟SMTP服務并擷取授權碼

可以參考第一篇文章,這裡不再贅述:【一】https://www.jb51.net/article/142220.htm

二、使用Python3 發送帶附件的郵件

0.使用的環境為:

Python 3.6.3 (64bit)

PyCharm 2017.3 (64bit)

1.注意事項:

在調用smtplib,發送簡單郵件的時候使用smtplib.SMTP()方法使沒有問題的。

但是如果是郵件存在附件的情況下,還使用smtplib.SMTP()方法,就可能會發送失敗,報“遠端主機拒接連接配接”的錯誤;

這是因為我們發送郵件時,調用第三方的郵件伺服器(如網易163郵箱,QQ郵箱等),這些郵件伺服器出于安全考慮,有時可能就會不允許使用簡單的,未經加密的smtplib.SMTP()方法直接發送郵件,而必須使用安全的,經過加密傳輸的smtplib.SMTP_SSL()方法,才能發送成功。

2.MIME類型:

MIME (Multipurpose Internet Mail Extensions) 是描述消息内容類型的網際網路标準。

MIME 消息能包含文本、圖像、音頻、視訊以及其他應用程式專用的資料。

簡單來說,就是我們發送郵件時,如果存在附件,不同類型的附件要使用對應的MIME類型的方式來發送

具體類型可以參考:MIME參考手冊

2.實作代碼:

import smtplib

from email.header import Header

from email.mime.text import MIMEText

from email.mime.multipart import MIMEMultipart

sender = '[email protected]'

receiver = '[email protected]'

smtpserver = 'smtp.163.com'

username = 'XXXXX'

password = 'XXXXX'

mail_title = '主題:這是帶附件的郵件'

# 建立一個帶附件的執行個體

message = MIMEMultipart()

message['From'] = sender

message['To'] = receiver

message['Subject'] = Header(mail_title, 'utf-8')

# 郵件正文内容

message.attach(MIMEText('來來來,這是郵件的正文', 'plain', 'utf-8'))

# 構造附件1(附件為TXT格式的文本)

att1 = MIMEText(open('text1.txt', 'rb').read(), 'base64', 'utf-8')

att1["Content-Type"] = 'application/octet-stream'

att1["Content-Disposition"] = 'attachment; filename="text1.txt"'

message.attach(att1)

# 構造附件2(附件為JPG格式的圖檔)

att2 = MIMEText(open('123.jpg', 'rb').read(), 'base64', 'utf-8')

att2["Content-Type"] = 'application/octet-stream'

att2["Content-Disposition"] = 'attachment; filename="123.jpg"'

message.attach(att2)

# 構造附件3(附件為HTML格式的網頁)

att3 = MIMEText(open('report_test.html', 'rb').read(), 'base64', 'utf-8')

att3["Content-Type"] = 'application/octet-stream'

att3["Content-Disposition"] = 'attachment; filename="report_test.html"'

message.attach(att3)

smtpObj = smtplib.SMTP_SSL() # 注意:如果遇到發送失敗的情況(提示遠端主機拒接連接配接),這裡要使用SMTP_SSL方法

smtpObj.connect(smtpserver)

smtpObj.login(username, password)

smtpObj.sendmail(sender, receiver, message.as_string())

print("郵件發送成功!!!")

smtpObj.quit()

3.發送成功後,接收方收到的郵件如下圖所示:

python3發送郵件_Python3使用SMTP發送帶附件郵件

以上就是本文的全部内容,希望對大家的學習有所幫助,也希望大家多多支援我們。

本文标題: Python3使用SMTP發送帶附件郵件

本文位址: http://www.cppcns.com/jiaoben/python/230597.html