本篇內(nèi)容主要講解“python怎么實(shí)現(xiàn)自動(dòng)發(fā)送郵件發(fā)送多人、群發(fā)、多附件”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“python怎么實(shí)現(xiàn)自動(dòng)發(fā)送郵件發(fā)送多人、群發(fā)、多附件”吧!
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡(jiǎn)單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名與空間、網(wǎng)絡(luò)空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、祁陽(yáng)網(wǎng)站維護(hù)、網(wǎng)站推廣。
主要會(huì)遇到的幾個(gè)問題:
1、smtplib。smtpauthenticationerror :(550,b“用戶沒有權(quán)限”)
2、smtplib。smtpauthenticationerror :(535,b'Error:驗(yàn)證失敗')
這兩個(gè)錯(cuò)誤都是你的密碼沒有使用授權(quán)碼導(dǎo)致的,授權(quán)碼是百度生成的。
3、554 DT:SPM 163 smtp5
這是網(wǎng)易郵箱的一個(gè)退貨檢測(cè)機(jī)制造成的,好像和頻繁發(fā)送有關(guān)。再發(fā)的時(shí)候遇到了,直到加了一個(gè)網(wǎng)易郵箱作為收件箱才發(fā)成功。不知道是不是這個(gè)原因,具體原因不明。如果有人知道,請(qǐng)?jiān)谒叫呕蛟u(píng)論下告訴我。謝謝!
準(zhǔn)備檢查系統(tǒng)上的python版本號(hào):
如圖,已經(jīng)安裝好了。
2.實(shí)現(xiàn)代碼如下(這是在Windows上編輯IDEL下的測(cè)試代碼,只改變linux上的附件路徑)
#-*-coding:utf-8-*-
fromemailimportencoders
importos
importtraceback
fromemail.headerimportHeader
from email . mime . textimport mime text
fromemail.utilsimportparseaddr,formataddr
importsmtplib
from email . mime . MultipimportMimePart
from email . mime . BaseIMPORTMimeBase
fromemailimportencoders
#中文處理
def _ format _ addr :
名稱,addr=parseaddr(s)
returnformataddr((標(biāo)頭(名稱,' utf-8 ')。encode(),addr))
defsend_email(to_addr_in,filepath_in):
#郵件發(fā)送者和接收者配置
from_addr='*******@163.com '
smtp_server='smtp.163.com '
密碼=' * * * * * * * * ' #這是您郵箱的第三方授權(quán)客戶端的密碼,不是您的登錄密碼
to_addr=to_addr_in
to_addrs=to_addr.split(',')
msg=MIMEMultipart()
發(fā)件人由消息['from']=_ format _ addr ('python發(fā)燒友%s'%from_addr)#
#msg['To']=_format_addr('管理員%s'%to_addr)#單個(gè)顯示的收件人
消息['收件人']=','。join(to_addrs)#多個(gè)顯示的收件人
消息['主題']=標(biāo)題('來自SMTP的問候.',' utf-8 ')。encode () #顯示消息頭
#要傳遞的路徑
#filepath=r'D:\test '
filepath=filepath_in
r=os.path.exists(filepath)
ifrisFalse:
msg.attach(MIMEText('nofile .)、“普通”、“utf-8”))
else:
#消息正文是MIMEText:
msg . attach(MiMeText(' sendwithfile .)、“普通”、“utf-8”))
#遍歷指定的目錄并顯示該目錄下的所有文件名
pathDir=os.listdir(filepath)
forallDirinpathDir:
child=os.path.join(filepath,allDir)
Printchild。解碼(' gbk') #。decode ('gbk ')是為了解決中文顯示亂碼的問題
#添加附件就是添加一個(gè)MIMEBase并在本地讀取一個(gè)文件
withopen(child,' rb')asf:
#設(shè)置附件的MIME和文件名,這里是txt類型:
mime=MIMEBase('file ',' xls ',filename=allDir)
#添加必要的標(biāo)題信息:
mime . add _ header(' Content-Disposition ',' attachment ',filename=allDir)
添加標(biāo)題('內(nèi)容標(biāo)識(shí)',' 0 ')
mime . add _ header(' X-附件-Id ',' 0 ')
#閱讀:中附件的內(nèi)容
mime.set_payload(f.read())
#用Base64編碼:
encoders.encode_base64(mime)
#添加到MIMEMultipart:
msg.attach(mime)
try:
server=smtplib。SMTP(smtp_server,25)
#server.starttls()
server . set _ debugle level(1)#用于顯示郵件發(fā)送的執(zhí)行步驟
server.login(from_addr,password)
#printto_addrs
server.sendmail(from_addr,to _ addrs,msg.as_string())
server.quit()
Exception,e:
打印“錯(cuò)誤:無法發(fā)送電子郵件”
printtraceback.format _ exc()
if__name__=='__main__':
send _ email(* * * * * * * @ qq.com,* * * * * * @ 163.com ',' d: \ \ test') 3。PyCharm中的執(zhí)行結(jié)果如下
顯示郵件已發(fā)送成功,可在對(duì)應(yīng)郵箱查看,對(duì)應(yīng)文件夾下有附件文字
如果沒有附件文字(這是截圖的網(wǎng)易郵箱,上面的QQ郵箱表示兩個(gè)郵箱都收到了郵件):
到此,相信大家對(duì)“python怎么實(shí)現(xiàn)自動(dòng)發(fā)送郵件發(fā)送多人、群發(fā)、多附件”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!