Python郵箱API發(fā)送郵件時,如何添加附件并設(shè)置其屬性?


【蜂郵EDM】:EDM郵件營銷平臺,郵件群發(fā)系統(tǒng),郵件代發(fā)服務(wù)。 查看價格
【AokSend郵件API】:觸發(fā)式郵件API,99%送達(dá)率,15元/萬封。 查看價格
【AOTsend】:Transaction Email API,$0.28/1000 Emails。 查看價格
在Python中,我們通常使用內(nèi)置的smtplib庫和email模塊來發(fā)送電子郵件。當(dāng)我們需要向郵件中添加附件時,我們需要構(gòu)建一個MIME(多用途互聯(lián)網(wǎng)郵件擴(kuò)展)消息,以便在郵件中包含非文本內(nèi)容。MIME消息允許我們將不同的數(shù)據(jù)類型(如文本、圖像、音頻和視頻)嵌入到電子郵件中。
下面是一個詳細(xì)的步驟指南,介紹如何在Python中使用郵箱API發(fā)送帶有附件的電子郵件,并設(shè)置附件的屬性。
一、設(shè)置郵件服務(wù)器和SMTP連接
首先,我們需要設(shè)置郵件服務(wù)器的信息,并使用smtplib庫建立與SMTP服務(wù)器的連接。SMTP(簡單郵件傳輸協(xié)議)是用于發(fā)送電子郵件的協(xié)議。
python
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email.utils import formatdate
from email import encoders
# 郵件服務(wù)器設(shè)置
smtp_server = 'smtp.example.com'
smtp_port = 587 # 通常用于TLS加密的端口
smtp_username = 'your-email@example.com'
smtp_password = 'your-password'
# 連接到SMTP服務(wù)器
server = smtplib.SMTP(smtp_server, smtp_port)
??????
【蜂郵EDM】:郵件群發(fā)系統(tǒng),EDM郵件營銷平臺,郵件代發(fā)服務(wù),專業(yè)研發(fā)定制郵件營銷系統(tǒng)及郵件群發(fā)解決方案!蜂郵自研產(chǎn)品線主要分為標(biāo)準(zhǔn)版、外貿(mào)版、企業(yè)版、定制版,及郵件API郵件SMTP接口服務(wù)。
立即查看 >> :郵件發(fā)送價格
【AokSend郵件API】:專注觸發(fā)式郵件API發(fā)送服務(wù)。15元/萬封,發(fā)送驗證碼郵件、忘記密碼郵件、通知告警郵件等,不限速。綜合送達(dá)率99%、進(jìn)箱率98%。觸發(fā)郵件也叫事務(wù)性郵件或推送郵件,包含:驗證碼郵件、重置密碼郵件、余額提醒郵件、會員到期郵件、賬號認(rèn)證郵件等!
立即查看 >> :郵件發(fā)送價格
【AotSend Email API】:AotSend is a Transaction Email API provider specializing in Safe-Stable email delivery. $0.28 per 1000 Emails. 99% Delivery, 98% Inbox Rate. AOT means Always On Time for email delivery.
立即查看 >> :郵件發(fā)送價格
server.starttls() # 啟用TLS加密
server.login(smtp_username, smtp_password)
二、創(chuàng)建郵件消息
接下來,我們將創(chuàng)建一個MIME多部分消息,該消息將包含文本部分和附件部分。
python
# 創(chuàng)建郵件對象
msg = MIMEMultipart()
msg['From'] = smtp_username
msg['To'] = 'recipient@example.com'
msg['Date'] = formatdate(localtime=True)
msg['Subject'] = 'Email with attachment'
# 添加郵件正文
body = 'This is the email body with an attached file.'
msg.attach(MIMEText(body, 'plain'))
三、添加附件
要添加附件,我們需要創(chuàng)建一個MIMEBase對象,并使用encoders模塊中的函數(shù)將其編碼為可傳輸?shù)母袷?。然后,我們將這個對象添加到郵件消息中。
python
# 讀取附件文件
with open('attachment.pdf', 'rb') as f:
part = MIMEBase('application', 'octet-stream') # 通用二進(jìn)制數(shù)據(jù)
part.set_payload(f.read())
# 編碼附件并設(shè)置Content-Transfer-Encoding頭部
encoders.encode_base64(part)
# 設(shè)置附件的文件名和描述性信息(可選)
part.add_header('Content-Disposition', 'attachment', filename='attachment.pdf')
part.add_header('Content-ID', '<00001>') # 可以設(shè)置一個唯一的Content-ID
part.add_header('Content-Description', 'A PDF attachment') # 附件的描述性文本
# 將附件添加到郵件消息中
msg.attach(part)
在上面的代碼中,我們首先使用open函數(shù)以二進(jìn)制模式('rb')打開附件文件。然后,我們創(chuàng)建一個MIMEBase對象,并指定MIME類型為application/octet-stream,這是一個通用的二進(jìn)制數(shù)據(jù)類型。接下來,我們使用set_payload方法將文件內(nèi)容設(shè)置為MIME對象的負(fù)載。
然后,我們使用encoders.encode_base64函數(shù)對MIME對象進(jìn)行Base64編碼,這是SMTP服務(wù)器要求的格式。我們還需要使用add_header方法設(shè)置一些額外的頭部信息,如Content-Disposition(指定附件的文件名和如何顯示它)、Content-ID(一個可選的唯一標(biāo)識符)和Content-Description(附件的描述性文本)。
最后,我們將編碼并設(shè)置頭部后的MIME對象添加到郵件消息中。
四、發(fā)送郵件并關(guān)閉連接
現(xiàn)在我們已經(jīng)構(gòu)建了完整的郵件消息,包括文本正文和附件。我們可以使用SMTP服務(wù)器的sendmail方法發(fā)送郵件。
python
# 發(fā)送郵件
text = msg.as_string()
server.sendmail(smtp_username, 'recipient@example.com', text)
# 關(guān)閉SMTP連接
server.quit()
在上面的代碼中,我們使用as_string方法將郵件消息對象轉(zhuǎn)換為字符串格式,然后將其傳遞給sendmail方法。sendmail方法需要三個參數(shù):發(fā)件人地址、收件人地址和郵件消息的字符串表示形式。最后,我們使用quit方法關(guān)閉與SMTP服務(wù)器的連接。
五、總結(jié)
在Python中發(fā)送帶有附件的電子郵件需要一些額外的步驟來構(gòu)建MIME多部分消息并處理附件文件。但是,通過使用`smtplib和email模塊,我們可以輕松地實(shí)現(xiàn)這一功能。


【蜂郵EDM】:EDM郵件營銷平臺,郵件群發(fā)系統(tǒng),郵件代發(fā)服務(wù)。 查看價格
【AokSend郵件API】:觸發(fā)式郵件API,99%送達(dá)率,15元/萬封。 查看價格
【AOTsend】:Transaction Email API,$0.28/1000 Emails。 查看價格
掃描二維碼推送至手機(jī)訪問。
版權(quán)聲明:本文由115SHOP博客發(fā)布,如需轉(zhuǎn)載請注明出處。
本文鏈接:http://www.xmam.com.cn/blogs/Python郵箱API發(fā)送郵件時,如何添加附件并設(shè)置其屬性?.html