轉(zhuǎn)載請注明:陳熹 chenx6542@foxmail.com (簡書號:半為花間酒)
若公眾號內(nèi)轉(zhuǎn)載請聯(lián)系公眾號:早起Python
Python 和郵件交互有哪些好處型型?
- 批量發(fā)送郵件 (各郵件可以含有不同內(nèi)容)
- 高度自定義的定時發(fā)送
- 更有效地管理收件箱
……
(注意:用代碼發(fā)郵件時注意不能頻繁發(fā)送,容易被當(dāng)作垃圾郵件被屏蔽和限制)
郵件基本概念
代碼操作前的配置
-
以網(wǎng)易163郵箱為例
郵箱需要先開通POP3/SMTP/IMAP
在代碼里登錄郵箱用的不是賬號密碼砌烁,而是授權(quán)碼
- 以QQ郵箱為例
安裝依賴模塊
-
yagmail
:基于SMTP的發(fā)郵件模塊 -
keyring
:訪問系統(tǒng)密鑰環(huán)服務(wù),方便萌业、安全地儲存密碼
在命令行中鍵入以下代碼可同時安裝兩個模塊:
pip install yagmail keyring --user
具體代碼操作
1. 發(fā)送單個郵件
基本代碼邏輯:
yagmail.SMTP(user=用戶名, host=SMTP服務(wù)器域名)
yagmail.SMTP(user=用戶名, password=授權(quán)碼, host=SMTP服務(wù)器域名)
mail.send(收件人用戶名排抬,郵件標(biāo)題蹲蒲,郵件內(nèi)容)
import yagmail
mail = yagmail.SMTP(user='chenx595@163.com', host='smtp.163.com')
contents = ['第一段內(nèi)容', '第二段內(nèi)容']
mail.send('chenx595@163.com', '這是一封郵件', contents)
注意 yagmail
基礎(chǔ)設(shè)置中服務(wù)器地址需要和所用的郵箱對應(yīng)
2. 群發(fā)郵件
可以看到番甩,將收件的郵箱組合成列表形式,即可給多個聯(lián)系人群發(fā)郵件
3. 發(fā)送帶有 HTML 樣式的郵件
需要具備一定的前端知識届搁,這里以附帶鏈接為例
<a href=鏈接網(wǎng)址>鏈接顯示的文字</a>
import yagmail
mail = yagmail.SMTP(user='chenx595@163.com', host='smtp.163.com')
contents = ['第一段', '第二段', '<a ]
mail.send('chenx595@163.com', '帶HTML樣式的郵件', contents)
4. 發(fā)送帶有附件的郵件
yagmail
非常智能缘薛,可以識別contents列表中本地路徑作為附件
import yagmail
mail = yagmail.SMTP(user='chenx595@163.com', host='smtp.163.com')
contents = ['第一段', '第二段', r'C:\xxx\xxx']
mail.send('chenx595@163.com', '帶HTML樣式的郵件', contents)
5. 給郵件正文嵌入圖片
這里就出現(xiàn)問題了,我們往往把圖片存在本地卡睦,如果按上述的代碼在內(nèi)容列表中放圖片路徑的話宴胧,會以附件形式存圖片。那么表锻,如何用代碼將圖片嵌入正文中呢恕齐,用到的代碼為:
yagmail.inline('圖片路徑')]
import yagmail
mail = yagmail.SMTP(user='chenx595@163.com', host='smtp.163.com')
contents = ['第一段', '第二段', yagmail.inline(r'C:\xxx\xxx')]
mail.send('chenx595@163.com', '帶HTML樣式的郵件', contents)
對添加附件的代碼稍加改動即可