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