Python真是萬(wàn)能語(yǔ)言啊蒋失,還能發(fā)郵件。桐玻。篙挽。我也是最近剛知道!那么問題來(lái)了畸冲,用Python發(fā)郵件有什么用凹邓琛?
1.可以和爬蟲代碼結(jié)合一下邑闲、譬如查12306、查攜程機(jī)票時(shí)可以設(shè)置查詢到自動(dòng)發(fā)郵件提醒
2.程序猿們可以利用Python發(fā)郵件監(jiān)控程序的運(yùn)行梧油,譬如有bug報(bào)錯(cuò)了苫耸,趕緊發(fā)個(gè)郵件提醒你,回來(lái)公司加班儡陨!
3.搜集網(wǎng)上行業(yè)信息的褪子,搜集到一堆郵箱,可以群發(fā)啊骗村,做廣告啊~(當(dāng)然這樣不太好)
4.譬如我可以寫一個(gè)暖心的小程序嫌褪,讓Python自動(dòng)在惡劣天氣,提醒親朋好友注意加衣服胚股,在生日時(shí)發(fā)送生日祝福笼痛。。琅拌。缨伊。。进宝。
果然Python大法好啊~
本次刻坊,我們發(fā)郵件用到的Python庫(kù)是smtplib和email。簡(jiǎn)單來(lái)說党晋,smtplib庫(kù)主要是用于負(fù)責(zé)和郵件服務(wù)器進(jìn)行通訊谭胚,email庫(kù)則主要用于規(guī)定編寫郵件的頭、主體未玻、內(nèi)容灾而、附件等。
這里多說一句深胳,小編是一名python開發(fā)工程師绰疤,這里有我自己整理的一套最新的python系統(tǒng)學(xué)習(xí)教程,包括從基礎(chǔ)的python腳本到web開發(fā)舞终、爬蟲轻庆、數(shù)據(jù)分析癣猾、數(shù)據(jù)可視化、機(jī)器學(xué)習(xí)等余爆。想要這些資料的可以關(guān)注小編纷宇,并在后臺(tái)私信小編即可領(lǐng)取。
發(fā)郵件之前我們需要用Python登錄smtp服務(wù)器蛾方,這樣才能有發(fā)送權(quán)限像捶,所以,我們需要去郵箱手動(dòng)開啟smtp服務(wù)桩砰,然后記住服務(wù)器授權(quán)碼(授權(quán)碼意思是拓春,你可以不用我的網(wǎng)頁(yè)郵箱或者郵箱app登錄,你可以用郵箱賬號(hào)+授權(quán)碼在后臺(tái)來(lái)獲取郵箱服務(wù)器的內(nèi)容)
由于本次我們用QQ郵箱發(fā)送亚隅,你也可以用網(wǎng)易郵箱或者其他郵箱發(fā)送硼莽,原理都是類似~
如何開啟QQ郵箱smtp服務(wù)器和獲取授權(quán)碼:??
很多場(chǎng)合都會(huì)用到郵箱授權(quán)碼進(jìn)行郵件的收取,現(xiàn)在講一下如何QQ郵箱的授權(quán)碼獲取方式煮纵,網(wǎng)易郵箱的也差不多哦~
工具/原料
電腦版的QQ郵箱
方法/步驟
登錄電腦版QQ郵箱懂鸵,選擇最上方的“設(shè)置”。
如圖選擇“賬戶”行疏,切換到賬戶詳情頁(yè)面匆光。
在賬戶頁(yè)面往下拉,可以看到pop3設(shè)置酿联,選擇“開啟”终息。
按照彈出的窗口提示操作進(jìn)行密保驗(yàn)證。有多種方式可以驗(yàn)證货葬,比如手機(jī)令牌等采幌。推薦使用短信驗(yàn)證。
按照短信驗(yàn)證的提示發(fā)送短信震桶。發(fā)送成功后直接點(diǎn)擊“我已發(fā)送”休傍。
彈出的提示中直接顯示16位的授權(quán)碼,可以復(fù)制下來(lái)蹲姐,或者是記下來(lái)磨取,千萬(wàn)不要記錯(cuò)了。然后點(diǎn)擊“確定”柴墩。
下方的收取選項(xiàng)一般是默認(rèn)30天的忙厌,點(diǎn)擊下拉箭頭,選擇“全部”江咳,并點(diǎn)擊頁(yè)面最下方的保存更改逢净。千萬(wàn)別忘了點(diǎn)擊保存,不然之前做的都白費(fèi)了!
最后就是到需要授權(quán)碼的那些地方輸入剛獲得的16位授權(quán)碼就可以了爹土。
END
注意事項(xiàng)
操作完別忘了保存甥雕。
授權(quán)碼不要記錯(cuò)了。
收取選項(xiàng)改為“全部”胀茵,不然無(wú)法導(dǎo)入所有的郵件社露。
獲取好服務(wù)器授權(quán)碼后,我們就可以寫代碼了琼娘,本次發(fā)送一個(gè)簡(jiǎn)單的文字郵件峭弟,然后添加一張可愛豬的圖片作為附件:
程序運(yùn)行過程:
程序運(yùn)行結(jié)果:
代碼如下:
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是服務(wù)器授權(quán)碼脱拼,mail_host是服務(wù)器地址(這里是QQsmtp服務(wù)器)
sender = 'xxxxxxx@qq.com'#
passWord = 'xxx'
mail_host = 'smtp.qq.com'
#receivers是郵件接收人瞒瘸,用列表保存,可以添加多個(gè)
receivers = ['aaa@qq.com','bbb@163.com']
#設(shè)置email信息
msg = MIMEMultipart()
#郵件主題
msg['Subject'] = input(f"{'請(qǐng)輸入郵件主題:'}")
#發(fā)送方信息
msg['From'] = sender
#郵件正文是MIMEText:
msg_content = input(f"{'請(qǐng)輸入郵件主內(nèi)容:'}")
msg.attach(MIMEText(msg_content, 'plain', 'utf-8'))
# 添加附件就是加上一個(gè)MIMEBase熄浓,從本地讀取一個(gè)圖片:
with open('/Users/xxx/1.jpg', 'rb') as f:
? ? # 設(shè)置附件的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)容讀進(jìn)來(lái):
? ? mime.set_payload(f.read())
? ? # 用Base64編碼:
? ? encoders.encode_base64(mime)
? ? # 添加到MIMEMultipart:
? ? msg.attach(mime)
#登錄并發(fā)送郵件
try:
? ? #QQsmtp服務(wù)器的端口號(hào)為465或587
? ? s = smtplib.SMTP_SSL("smtp.qq.com", 465)
? ? s.set_debuglevel(1)
? ? s.login(sender,passWord)
? ? #給receivers列表中的聯(lián)系人逐個(gè)發(fā)送郵件
? ? for i in range(len(receivers)):
? ? ? ? to = receivers[i]
? ? ? ? msg['To'] = to
? ? ? ? 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)
Python
本文章素材來(lái)源于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系刪除玉组。