發送電子郵件已經是我們日常溝通的重要部分,無論是工作上還是生活中,都有很多時候需要發送郵件。本文將詳細介紹使用Python SMTP發送郵件的完整指南,包括SMTP協議、郵件格式、郵件伺服器選取、代碼示例等內容。
一、SMTP協議
SMTP,即簡單郵件傳輸協議,是用於發送電子郵件的標準協議。它定義了郵件的傳輸方式,附件格式等規範,以保證郵件能夠被正常接收。當我們通過Python發送郵件時,要使用SMTP協議來構建郵件並發送。
在Python中,我們可以使用smtplib庫來實現SMTP協議。對於SMTP伺服器的選擇,需要對自己所在的網路環境作出相應的選擇。一般而言,百度、騰訊、阿里等互聯網公司都提供SMTP伺服器,同時也可以選擇其他穩定的SMTP服務商。
二、郵件格式
在使用Python發送郵件時,需要注意郵件格式,保證郵件能夠正確顯示。常見的郵件格式有純文本、HTML、純文本+HTML混合。在發送郵件時,可以通過設置MIME(多用途互聯網郵件擴展)格式來指定郵件格式。
下面是一個HTML格式的郵件示例:
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email.utils import COMMASPACE
# 發送郵件的賬號和密碼
sender = 'youremail@163.com'
password = 'yourpassword'
# 收件人
to_addr = ['email1@163.com', 'email2@qq.com']
# 構造帶附件的郵件
msg = MIMEMultipart()
msg['From'] = Header("發送人", 'utf-8')
msg['To'] = COMMASPACE.join(to_addr)
msg['Subject'] = Header('Python發送HTML格式的郵件', 'utf-8')
# 郵件正文
body = MIMEText('Hello, HTML郵件測試!
' +
'' +
'', 'html', 'utf-8')
msg.attach(body)
# 添加附件
file_path = '/path/to/attachment'
with open(file_path, 'rb') as f:
attachment = MIMEApplication(f.read(), Name='attachment.pdf')
attachment['Content-Disposition'] = 'attachment; filename="attachment.pdf"'
msg.attach(attachment)
# 發送郵件
try:
server = smtplib.SMTP('smtp.163.com', 25)
server.login(sender, password)
server.sendmail(sender, to_addr, msg.as_string())
server.quit()
print('郵件發送成功')
except Exception as e:
print('郵件發送失敗,錯誤信息:', e)
郵件正文使用HTML格式,可以輕鬆地顯示出格式豐富的內容和鏈接。同時,也可以通過構造MIME消息實現帶附件的郵件。
三、郵件伺服器選取
在選擇郵件伺服器時,需要考慮可靠性、速度和穩定性等問題。一般來說,互聯網公司提供的SMTP伺服器比較可靠,並且能夠支持較大的郵件發送量。同時,也可以選擇其他穩定的SMTP服務商。
對於國內用戶,建議選擇提供SSL加密的SMTP伺服器,以保證郵件傳輸過程的安全性。 更為常用和穩定的SMTP伺服器如下:
- 163郵箱:smtp.163.com
- QQ郵箱:smtp.qq.com
- 阿里雲郵件推送:smtpdm.aliyun.com
四、代碼示例
下面是一個使用smtplib庫發送純文本郵件的示例:
import smtplib
from email.mime.text import MIMEText
from email.header import Header
# 發送郵件的賬號和密碼
sender = 'youremail@163.com'
password = 'yourpassword'
# 收件人
to_addr = 'email@163.com'
# 構造純文本郵件
message = MIMEText('Python發送純文本郵件', 'plain', 'utf-8')
message['From'] = Header("發送人", 'utf-8')
message['To'] = Header("接收人", 'utf-8')
message['Subject'] = Header('Python發送郵件測試', 'utf-8')
# 發送郵件
try:
server = smtplib.SMTP('smtp.163.com', 25)
server.login(sender, password)
server.sendmail(sender, to_addr, message.as_string())
server.quit()
print("郵件發送成功")
except Exception as e:
print('郵件發送失敗,錯誤信息:', e)
這是一個發送純文本郵件的示例,郵件正文使用純文本格式,簡單明了。
本文主要介紹了使用Python SMTP發送郵件的相關知識,包括SMTP協議、郵件格式、郵件伺服器選取及代碼示例。希望可以對需要發送郵件的讀者提供一些幫助。
原創文章,作者:ZKJUK,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/317438.html