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


【蜂郵EDM】:郵件群發(fā)系統(tǒng),EDM郵件營銷平臺(tái),郵件代發(fā)服務(wù)。 查看價(jià)格
【AokSend郵件API】:觸發(fā)式郵件API,15元/萬封,99%送達(dá)率。 查看價(jià)格
【烽火郵箱】:新人領(lǐng)取免費(fèi)域名郵箱,可用作企業(yè)郵箱公司郵箱。 查看價(jià)格
在Python中,我們通常[蜂]使用內(nèi)置的smtplib庫[郵]和email模塊來發(fā)送電子[文]郵件。當(dāng)我們需要向郵件中添[章]加附件時(shí),我們需要構(gòu)建一個(gè)[來]MIME(多用途互聯(lián)網(wǎng)郵件[自]擴(kuò)展)消息,以便在郵件中包[蜂]含非文本內(nèi)容。MIME消息[郵]允許我們將不同的數(shù)據(jù)類型([E]如文本、圖像、音頻和視頻)[D]嵌入到電子郵件中。
下面是一個(gè)詳細(xì)的步驟指南,介紹如何在Python中使用郵箱API發(fā)送帶有附件的電子郵件,并設(shè)置附件的屬性。
一、設(shè)置郵件服務(wù)器和SMTP連接
首先,我們需要設(shè)置郵件服務(wù)器的信息,并使用smtplib庫建立與SMTP服務(wù)器的連接。SMTP(簡單郵件傳輸協(xié)議)是用于發(fā)送電子郵件的協(xié)議。
python
import smtplib
Powered By 蜂.郵.EDMfrom email.mime.mu[M]ltipart import MIMEMultipart[博]
from email.mime.ba[客]se import MIMEBase
from email.mime.te[蜂]xt import MIMEText
from email.utils import formatdate
from email import encoders
# 郵件服務(wù)器設(shè)置
smtp_server = 'smtp.exa[郵]mple.com'[文]
smtp_port = 587 # 通常用于TLS加密的端口
smtp_username[章] = 'your-ema[來]il@example.co[自]m'
smtp_password[蜂] = 'your-pas[郵]sword'
# 連接到SMTP服務(wù)器
server = smtplib.SMTP([E]smtp_server, smtp_port)
server.startt[D]ls() # 啟用TLS加密
server.login(smtp_username, smtp_password)
二、創(chuàng)建郵件消息
接下來,我們將創(chuàng)建一個(gè)MIME多部分消息,該消息將包含文本部分和附件部分。
python
# 創(chuàng)建郵件對(duì)象
msg = MIMEMultipart[M]()
msg['From[博]'] = smtp_username[客]
msg['To[蜂]39;] = 'recipien[郵]t@example.com[文]'
msg['Date[章]'] = formatdate(lo[來]caltime=True)[自]
msg['Subj[蜂]ect'] = 'Email with attachment[郵]9;
# 添加郵件正文
body = 'This is the email body with an attached file.'
msg.attach(MIMEText(body, 'plain'))
三、添加附件
要添加附件,我們需要?jiǎng)?chuàng)建一個(gè)MIMEBase對(duì)象,并使用encoders模塊中的函數(shù)將其編碼為可傳輸?shù)母袷健H缓?,我們將這個(gè)對(duì)象添加到郵件消息中。
python
# 讀取附件文件
with open('att[E]achment.pdf[D]39;, 'rb')[M] as f:
part = MIMEBase('[博];application&[客]#39;, 'octet-st[蜂]ream') # 通用二進(jìn)制數(shù)據(jù)
part.set_payl[郵]oad(f.read())[文]
# 編碼附件并設(shè)置Conten[章]t-Transfer-En[來]coding頭部
encoders.enco[自]de_base64(par[蜂]t)
# 設(shè)置附件的文件名和描述性信[郵]息(可選)
part.add_head[E]er('Conte[D]nt-Dispositio[M]n', 'attachme[博]nt', filename='[客];attachment.p[蜂]df')
part.add_head[郵]er('Conte[文]nt-ID', '<0000[章]1>') # 可以設(shè)置一個(gè)唯一的Cont[來]ent-ID
part.add_head[自]er('Conte[蜂]nt-Descriptio[郵]n', 'A PDF attachment[E]9;) # 附件的描述性文本
# 將附件添加到郵件消息中
msg.attach(part)
在上面的代碼中,我們首先使[D]用open函數(shù)以二進(jìn)制模式[M]('rb'[博])打開附件文件。然后,我們[客]創(chuàng)建一個(gè)MIMEBase對(duì)[蜂]象,并指定MIME類型為a[郵]pplication/oc[文]tet-stream,這是[章]一個(gè)通用的二進(jìn)制數(shù)據(jù)類型。[來]接下來,我們使用set_p[自]ayload方法將文件內(nèi)容[蜂]設(shè)置為MIME對(duì)象的負(fù)載。[郵]
然后,我們使用encode[E]rs.encode_bas[D]e64函數(shù)對(duì)MIME對(duì)象進(jìn)[M]行Base64編碼,這是S[博]MTP服務(wù)器要求的格式。我[客]們還需要使用add_hea[蜂]der方法設(shè)置一些額外的頭[郵]部信息,如Content-[文]Disposition(指[章]定附件的文件名和如何顯示它[來])、Content-ID([自]一個(gè)可選的唯一標(biāo)識(shí)符)和C[蜂]ontent-Descri[郵]ption(附件的描述性文[E]本)。
最后,我們將編碼并設(shè)置頭部后的MIME對(duì)象添加到郵件消息中。
四、發(fā)送郵件并關(guān)閉連接
現(xiàn)在我們已經(jīng)構(gòu)建了完整的郵件消息,包括文本正文和附件。我們可以使用SMTP服務(wù)器的sendmail方法發(fā)送郵件。
python
# 發(fā)送郵件
text = msg.as_string[D]()
server.sendma[M]il(smtp_usern[博]ame, 'recipien[客]t@example.com[蜂]', text)
# 關(guān)閉SMTP連接
server.quit()[郵]
在上面的代碼中,我們使用as_string方法將郵件消息對(duì)象轉(zhuǎn)換為字符串格式,然后將其傳遞給sendmail方法。sendmail方法需要三個(gè)參數(shù):發(fā)件人地址、收件人地址和郵件消息的字符串表示形式。最后,我們使用quit方法關(guān)閉與SMTP服務(wù)器的連接。
五、總結(jié)
在Python中發(fā)送帶有附件的電子郵件需要一些額外的步驟來構(gòu)建MIME多部分消息并處理附件文件。但是,通過使用`smtplib和email模塊,我們可以輕松地實(shí)現(xiàn)這一功能。
?????? 【烽火郵箱】:烽火郵箱是一款簡潔高效的企業(yè)郵箱平臺(tái),新客戶贈(zèng)送免費(fèi)企業(yè)郵箱,一個(gè)起賣、按月付費(fèi)(低至9.9元);支持別名郵箱及群組郵箱,支持定制無限郵箱。高權(quán)重純凈IP池,系統(tǒng)自帶反垃圾機(jī)制。
立即查看 >> :企業(yè)郵箱價(jià)格
【蜂郵EDM】:郵件群發(fā)系統(tǒng),EDM郵件營銷平臺(tái),郵件代發(fā)服務(wù),專業(yè)研發(fā)定制郵件營銷系統(tǒng)及郵件群發(fā)解決方案!蜂郵自研產(chǎn)品線主要分為標(biāo)準(zhǔn)版、外貿(mào)版、企業(yè)版、定制版,及郵件API郵件SMTP接口服務(wù)。
立即查看 >> :郵件發(fā)送價(jià)格
【AokSend郵件API】:專注觸發(fā)式郵件API發(fā)送服務(wù)。15元/萬封,發(fā)送驗(yàn)證碼郵件、忘記密碼郵件、通知告警郵件等,不限速。綜合送達(dá)率99%、進(jìn)箱率98%。觸發(fā)郵件也叫事務(wù)性郵件或推送郵件,包含:驗(yàn)證碼郵件、重置密碼郵件、余額提醒郵件、會(huì)員到期郵件、賬號(hào)認(rèn)證郵件等!
立即查看 >> :郵件發(fā)送價(jià)格


【蜂郵EDM】:郵件群發(fā)系統(tǒng),EDM郵件營銷平臺(tái),郵件代發(fā)服務(wù)。 查看價(jià)格
【AokSend郵件API】:觸發(fā)式郵件API,15元/萬封,99%送達(dá)率。 查看價(jià)格
【烽火郵箱】:新人領(lǐng)取免費(fèi)域名郵箱,可用作企業(yè)郵箱公司郵箱。 查看價(jià)格
掃描二維碼推送至手機(jī)訪問。
版權(quán)聲明:本文由蜂郵EDM博客發(fā)布,如需轉(zhuǎn)載請(qǐng)注明出處。