使用Python從Gmail帳戶傳送帶附件的郵件
在本文中,我們將學習如何使用Python傳送帶有附件的電子郵件。傳送郵件不需要任何外部庫。Python自帶一個名為SMTPlib的模組。它使用SMTP(簡單郵件傳輸協議)傳送郵件,並建立用於郵件傳送的SMTP客戶端會話物件。
SMTP需要有效的發件人和收件人郵箱ID以及埠號。不同網站的埠號各不相同。例如,Google的埠號為587。
首先,我們需要匯入傳送郵件的模組。
import smtplib
這裡我們還使用了MIME(多用途網際網路郵件擴充套件)模組來提高靈活性。使用MIME標頭,我們可以儲存發件人和收件人資訊以及其他一些詳細資訊。MIME也需要設定郵件附件。
我們使用Google的Gmail服務傳送郵件。因此,出於Google的安全考慮,我們需要一些設定(如果需要)。如果這些設定沒有配置好,那麼如果Google不支援第三方應用程式的訪問,以下程式碼可能無法執行。
要允許訪問,我們需要在Google帳戶中設定“安全性較低的應用訪問”設定。如果啟用了兩步驗證,則無法使用安全性較低的訪問。
要完成此設定,請訪問Google的管理控制檯,並搜尋“安全性較低的應用”設定。

使用SMTP (smtplib)傳送帶附件郵件的步驟
- 建立MIME
- 將發件人和收件人地址新增到MIME
- 將郵件標題新增到MIME
- 將郵件正文新增到MIME
- 以二進位制模式開啟將要作為附件新增到郵件的檔案
- 讀取位元組流並使用base64編碼方案對附件進行編碼。
- 新增附件的標頭
- 使用有效的埠號和適當的安全功能啟動SMTP會話。
- 登入系統。
- 傳送郵件並退出
示例程式碼
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
mail_content = '''Hello,
This is a test mail.
In this mail we are sending some attachments.
The mail is sent using Python SMTP library.
Thank You
'''
#The mail addresses and password
sender_address = 'sender123@gmail.com'
sender_pass = 'xxxxxxxx'
receiver_address = 'receiver567@gmail.com'
#Setup the MIME
message = MIMEMultipart()
message['From'] = sender_address
message['To'] = receiver_address
message['Subject'] = 'A test mail sent by Python. It has an attachment.'
#The subject line
#The body and the attachments for the mail
message.attach(MIMEText(mail_content, 'plain'))
attach_file_name = 'TP_python_prev.pdf'
attach_file = open(attach_file_name, 'rb') # Open the file as binary mode
payload = MIMEBase('application', 'octate-stream')
payload.set_payload((attach_file).read())
encoders.encode_base64(payload) #encode the attachment
#add payload header with filename
payload.add_header('Content-Decomposition', 'attachment', filename=attach_file_name)
message.attach(payload)
#Create SMTP session for sending the mail
session = smtplib.SMTP('smtp.gmail.com', 587) #use gmail with port
session.starttls() #enable security
session.login(sender_address, sender_pass) #login with mail_id and password
text = message.as_string()
session.sendmail(sender_address, receiver_address, text)
session.quit()
print('Mail Sent')
輸出
D:\Python TP\Python 450\linux>python 327.Send_Mail.py Mail Sent

廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP