用Python發(fā)郵件

3.jpg

更新:評論區(qū)淪陷了,我現(xiàn)在終于知道為什么知乎可以關閉評論,篩選特定評論了。。。

我只說一句,原文的意思,說Python大發(fā)好,只是說Python方便好用,并沒有和其他編程語言作對比,更沒有說孰優(yōu)孰劣的意思~


Python真是萬能語言啊,還能發(fā)郵件。。。我也是最近剛知道!那么問題來了,用Python發(fā)郵件有什么用啊?

1.可以和爬蟲代碼結(jié)合一下、譬如查12306、查攜程機票時可以設置查詢到自動發(fā)郵件提醒

2.程序猿們可以利用Python發(fā)郵件監(jiān)控程序的運行,譬如有bug報錯了,趕緊發(fā)個郵件提醒你,回來公司加班!

3.搜集網(wǎng)上行業(yè)信息的,搜集到一堆郵箱,可以群發(fā)啊,做廣告啊~(當然這樣不太好)

4.譬如我可以寫一個暖心的小程序,讓Python自動在惡劣天氣,提醒親朋好友注意加衣服,在生日時發(fā)送生日祝福。。。。。。

果然Python大法好啊~


本次,我們發(fā)郵件用到的Python庫是smtplib和email。簡單來說,smtplib庫主要是用于負責和郵件服務器進行通訊,email庫則主要用于規(guī)定編寫郵件的頭、主體、內(nèi)容、附件等。

發(fā)郵件之前我們需要用Python登錄smtp服務器,這樣才能有發(fā)送權(quán)限,所以,我們需要去郵箱手動開啟smtp服務,然后記住服務器授權(quán)碼(授權(quán)碼意思是,你可以不用我的網(wǎng)頁郵箱或者郵箱app登錄,你可以用郵箱賬號+授權(quán)碼在后臺來獲取郵箱服務器的內(nèi)容)

由于本次我們用QQ郵箱發(fā)送,你也可以用網(wǎng)易郵箱或者其他郵箱發(fā)送,原理都是類似~

如何開啟QQ郵箱smtp服務器和獲取授權(quán)碼:??


轉(zhuǎn)載自:https://jingyan.baidu.com/article/fedf0737af2b4035ac8977ea.html

很多場合都會用到郵箱授權(quán)碼進行郵件的收取,現(xiàn)在講一下如何QQ郵箱的授權(quán)碼獲取方式,網(wǎng)易郵箱的也差不多哦~

工具/原料

  • 電腦版的QQ郵箱

方法/步驟

登錄電腦版QQ郵箱,選擇最上方的“設置”。

image

如圖選擇“賬戶”,切換到賬戶詳情頁面。

image

在賬戶頁面往下拉,可以看到pop3設置,選擇“開啟”。

image

按照彈出的窗口提示操作進行密保驗證。有多種方式可以驗證,比如手機令牌等。推薦使用短信驗證。

image

按照短信驗證的提示發(fā)送短信。發(fā)送成功后直接點擊“我已發(fā)送”。

image

彈出的提示中直接顯示16位的授權(quán)碼,可以復制下來,或者是記下來,千萬不要記錯了。然后點擊“確定”。

image

下方的收取選項一般是默認30天的,點擊下拉箭頭,選擇“全部”,并點擊頁面最下方的保存更改。千萬別忘了點擊保存,不然之前做的都白費了!

image

最后就是到需要授權(quán)碼的那些地方輸入剛獲得的16位授權(quán)碼就可以了。

END

注意事項

  • 操作完別忘了保存。
  • 授權(quán)碼不要記錯了。
  • 收取選項改為“全部”,不然無法導入所有的郵件。

獲取好服務器授權(quán)碼后,我們就可以寫代碼了,本次發(fā)送一個簡單的文字郵件,然后添加一張可愛豬的圖片作為附件:

image

程序運行過程:詳見知乎https://zhuanlan.zhihu.com/p/33192111

程序運行結(jié)果:

image

代碼如下:

import smtplib
from email import encoders
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
#sender是郵件發(fā)送人郵箱,passWord是服務器授權(quán)碼,mail_host是服務器地址(這里是QQsmtp服務器)
sender = 'xxxxxxx@qq.com'#
passWord = 'xxx'
mail_host = 'smtp.qq.com'
#receivers是郵件接收人,用列表保存,可以添加多個
receivers = ['aaa@qq.com','bbb@163.com']

#設置email信息
msg = MIMEMultipart()
#郵件主題
msg['Subject'] = input(u'請輸入郵件主題:')
#發(fā)送方信息
msg['From'] = sender
#郵件正文是MIMEText:
msg_content = input(u'請輸入郵件主內(nèi)容:')
msg.attach(MIMEText(msg_content, 'plain', 'utf-8'))
# 添加附件就是加上一個MIMEBase,從本地讀取一個圖片:
with open(u'/Users/xxx/1.jpg', 'rb') as f:
    # 設置附件的MIME和文件名,這里是jpg類型,可以換png或其他類型:
    mime = MIMEBase('image', 'jpg', filename='Lyon.png')
    # 加上必要的頭信息:
    mime.add_header('Content-Disposition', 'attachment', filename='Lyon.png')
    mime.add_header('Content-ID', '<0>')
    mime.add_header('X-Attachment-Id', '0')
    # 把附件的內(nèi)容讀進來:
    mime.set_payload(f.read())
    # 用Base64編碼:
    encoders.encode_base64(mime)
    # 添加到MIMEMultipart:
    msg.attach(mime)

#登錄并發(fā)送郵件
try:
    #QQsmtp服務器的端口號為465或587
    s = smtplib.SMTP_SSL("smtp.qq.com", 465)
    s.set_debuglevel(1)
    s.login(sender,passWord)
    #給receivers列表中的聯(lián)系人逐個發(fā)送郵件
    for item in receivers:
        msg['To'] = to = item
        s.sendmail(sender,to,msg.as_string())
        print('Success!')
    s.quit()
    print ("All emails have been sent over!")
except smtplib.SMTPException as e:
    print ("Falied,%s",e)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容