一、準備工作
在使用Python發送郵件之前,我們需要確保計算機已經有SMTP服務,並已經安裝Python SMTP庫。SMTP全稱為Simple Mail Transfer Protocol,是互聯網標準中用於電子郵件傳輸的協議。
Python SMTP庫提供了一種很方便的方法發送郵件。在Python SMTP庫中的SMTP類定義了郵件的發送器。除此之外,Python還提供了MIME文檔處理類,可以用於構建郵件內容,包括文本、HTML、附件等。
# 導入smtplib庫
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
二、發送簡單文本郵件
Python SMTP類中的sendmail()方法可以發送簡單的文本郵件。下面是一個簡單的例子,通過google郵件服務器發送郵件。
# 設置發件人、收件人、郵件正文
from_address = 'your_email@gmail.com'
to_address = 'recipient_email@gmail.com'
subject = 'Python sends email'
body = 'Hello World!'
# 設置SMTP服務器信息
smtp_server = 'smtp.gmail.com'
smtp_port = 587
# 創建郵件對象
msg = MIMEText(body)
# 設置郵件頭部信息
msg['From'] = from_address
msg['To'] = to_address
msg['Subject'] = subject
# 創建SMTP客戶端對象,並連接到指定SMTP服務器
s = smtplib.SMTP(smtp_server, smtp_port)
# 發送郵件
s.sendmail(from_address, [to_address], msg.as_string())
# 關閉SMTP客戶端對象
s.quit()
三、發送帶有HTML格式的郵件
除了簡單的文本郵件,Python還可以發送帶有HTML格式的郵件。下面是一個例子:
# 設置發件人、收件人、郵件正文
from_address = 'your_email@gmail.com'
to_address = 'recipient_email@gmail.com'
subject = 'Python sends email'
body = 'Hello World!
This is a test email sent using Python.
'
# 設置SMTP服務器信息
smtp_server = 'smtp.gmail.com'
smtp_port = 587
# 創建郵件對象
msg = MIMEMultipart()
# 將HTML內容添加到MIMEText中
msg.attach(MIMEText(body, 'html'))
# 設置郵件頭部信息
msg['From'] = from_address
msg['To'] = to_address
msg['Subject'] = subject
# 創建SMTP客戶端對象,並連接到指定SMTP服務器
s = smtplib.SMTP(smtp_server, smtp_port)
# 發送郵件
s.sendmail(from_address, [to_address], msg.as_string())
# 關閉SMTP客戶端對象
s.quit()
四、發送帶有附件的郵件
有時候,我們需要在郵件中添加附件來傳遞更多的信息。下面是一個例子,我們將一個文件添加到郵件中並發送。
# 設置發件人、收件人、郵件正文
from_address = 'your_email@gmail.com'
to_address = 'recipient_email@gmail.com'
subject = 'Python sends email'
body = 'Please find the attached file.'
# 設置SMTP服務器信息
smtp_server = 'smtp.gmail.com'
smtp_port = 587
# 創建郵件對象
msg = MIMEMultipart()
# 設置郵件頭部信息
msg['From'] = from_address
msg['To'] = to_address
msg['Subject'] = subject
# 添加文本信息
msg.attach(MIMEText(body))
# 添加附件
filename = 'file.txt'
with open(filename, 'rb') as f:
attachment = MIMEApplication(f.read(), _subtype='txt')
attachment.add_header('Content-Disposition', 'attachment', filename=filename)
msg.attach(attachment)
# 創建SMTP客戶端對象,並連接到指定SMTP服務器
s = smtplib.SMTP(smtp_server, smtp_port)
# 發送郵件
s.sendmail(from_address, [to_address], msg.as_string())
# 關閉SMTP客戶端對象
s.quit()
五、使用SSL/TLS連接SMTP服務器
以上示例中,我們使用了默認的SMTP連接方式,即明文傳輸。如果需要更加安全的傳輸方式,可以使用SSL/TLS協議進行連接。下面是一個例子:
# 設置發件人、收件人、郵件正文
from_address = 'your_email@gmail.com'
to_address = 'recipient_email@gmail.com'
subject = 'Python sends email'
body = 'This email is sent using SSL/TLS.'
# 設置SMTP服務器信息
smtp_server = 'smtp.gmail.com'
smtp_port = 465
# 創建SSL/TLS連接
s = smtplib.SMTP_SSL(smtp_server, smtp_port)
# 登錄郵件服務器
s.login(from_address, 'password') #注意替換成正確的密碼
# 創建郵件對象
msg = MIMEText(body)
msg['From'] = from_address
msg['To'] = to_address
msg['Subject'] = subject
# 發送郵件
s.sendmail(from_address, [to_address], msg.as_string())
# 關閉SMTP客戶端對象
s.quit()
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/239129.html