利用Python自动发送电子邮件
總第129篇/張俊紅
收發(fā)郵件幾乎是每個(gè)人每天都需要做的一件事情,對于一些固定每天需要發(fā)送的郵件或者是同時(shí)需要發(fā)送好幾十好幾百份的時(shí)候,我們可以考慮借助Python來自動(dòng)發(fā)送郵件。
在利用Python進(jìn)行發(fā)送郵件時(shí)主要借助smtplib和email兩個(gè)模塊,其中smtplib主要用來建立服務(wù)器鏈接、服務(wù)器斷開的工作,而email模塊主要用來設(shè)置一些與郵件本身相關(guān)的內(nèi)容,比如收件人、發(fā)件人、主題之類的。
不同郵箱的服務(wù)器鏈接地址(官方名叫端口)不一樣,大家根據(jù)自己使用的郵箱設(shè)置相應(yīng)的服務(wù)器鏈接。如果是outlook企業(yè)郵箱的話,一般都是mail.xxx.com(xxx是你公司名字),具體的可以問公司的運(yùn)維同事。
這里我們拿公共郵箱來舉例,163郵箱還是相對比較常用的,所以這里就以163郵箱為例,給大家演示一下具體如何利用Python進(jìn)行自動(dòng)發(fā)送郵件。
在開始進(jìn)行正式代碼之前,需要先登陸自己的163郵箱進(jìn)行授權(quán)設(shè)置,授權(quán)碼設(shè)置如下:
點(diǎn)擊設(shè)置中的POP3/SMTP/IMAP,勾選SMTP服務(wù),根據(jù)提是進(jìn)行授權(quán)碼設(shè)置,設(shè)置授權(quán)成功后,在Python中利用授權(quán)碼進(jìn)行登陸,而不是你本來的郵箱密碼,如果使用本來的郵箱密碼登陸,會(huì)報(bào)錯(cuò)。
>>>import?smtplib >>>from?email?import?encoders >>>from?email.header?import?Header >>>from?email.mime.text?import?MIMEText >>>from?email.utils?import?parseaddr,?formataddr >>>from?email.mime.application?import?MIMEApplication#發(fā)件人郵箱 >>>asender="zhangjunhongdata@163.com" #收件人郵箱 >>>areceiver="zhangjunhong@163.com" #抄送人郵箱 >>>acc?=?'zhangjunhong@qq.com' #郵件主題 >>>asubject?=?'這是一份測試郵件'??#發(fā)件人地址 >>>from_addr?=?"zhangjunhongdata@163.com" #郵箱密碼(授權(quán)碼) >>>password="123data"#郵件設(shè)置 >>>msg?=?MIMEMultipart() >>>msg['Subject']?=?asubject?? >>>msg['to']?=?areceiver?? >>>msg['Cc']?=?acc? >>>msg['from']?=??"張俊紅"#郵件正文內(nèi)容 >>>body?=?"你好,這是一份測試郵件"#添加郵件正文: >>>msg.attach(MIMEText(body,?'plain',?'utf-8'))#添加附件 #注意這里的文件路徑是斜杠 >>>xlsxpart?=?MIMEApplication(open('C:/Users/zhangjunhong/Desktop/這是附件.xlsx',?'rb').read()) >>>xlsxpart.add_header('Content-Disposition',?'attachment',?filename='這是附件.xlsx') >>>msg.attach(xlsxpart)????#設(shè)置郵箱服務(wù)器地址以及端口 >>>smtp_server?="smtp.163.com" >>>server?=?smtplib.SMTP(smtp_server,?25) >>>server.set_debuglevel(1) #登陸郵箱 >>>server.login(from_addr,?password) #發(fā)送郵件 >>>server.sendmail(from_addr,?>>>areceiver.split(',')+acc.split(','),?msg.as_string()) #斷開服務(wù)器鏈接 server.quit()最后的結(jié)果如下圖:
如果是需要同時(shí)發(fā)送多份郵件,可以把上述郵件發(fā)送過程定義成一個(gè)函數(shù),把收件人以及其他內(nèi)容生成一個(gè)列表,然后遍歷每一個(gè)收件人,最后調(diào)用發(fā)送郵件函數(shù)進(jìn)行多份郵件發(fā)送。
把郵件發(fā)送過程封裝成一個(gè)函數(shù)相對比較簡單,只需要把上述給單個(gè)人發(fā)送郵件的內(nèi)容當(dāng)成語句塊,收件人當(dāng)作參數(shù)即可,下面我們定義了一個(gè)名為send_mail的函數(shù):
def?send_mail(areceiver):給單人發(fā)送郵件的代碼遍歷發(fā)送每一個(gè)郵件實(shí)現(xiàn)如下:
#多個(gè)收件人列表 receivers?=?["zhangjunhongdata1@163.com1","zhangjunhongdata2@163.com1","zhangjunhongdata3@163.com1"] #開始遍歷 for?r?in?receivers:send_mail(r)關(guān)于自動(dòng)發(fā)送郵件還有很多內(nèi)容,比如定時(shí)發(fā)送,正文添加圖片,附件添加圖片,編寫圖形化界面,也就是自己寫一個(gè)類似于outlook一樣的郵件客戶端都是可以的,本篇文章只是幫助大家打開自動(dòng)發(fā)送郵件的大門,里面還有很多精彩的內(nèi)容,大家有興趣的可以自行上網(wǎng)搜索學(xué)習(xí)。
總結(jié)
以上是生活随笔為你收集整理的利用Python自动发送电子邮件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 动视巨变:PC 收入首次超过主机,暴雪游
- 下一篇: 孟买指数