#Python自動(dòng)化辦公--郵件發(fā)送全過程詳解
使用Python實(shí)現(xiàn)自動(dòng)化郵件發(fā)送,可以讓你擺脫繁瑣的重復(fù)性業(yè)務(wù),可以節(jié)省非常多的時(shí)間。操作前配置(以較為復(fù)雜的QQ郵箱舉例,其他郵箱操作類似)

單擊設(shè)置-賬號(hào),滑倒下方協(xié)議處,開啟IMAP/SMTP協(xié)議(IMAP,即Internet?Message?Access?Protocol(互聯(lián)網(wǎng)郵件訪問協(xié)議),可以通過這種協(xié)議從郵件服務(wù)器上獲取郵件的信息、下載郵件等。IMAP與POP類似,都是一種郵件獲取協(xié)議。)

(ps.開啟需要驗(yàn)證)
記住端口號(hào),后續(xù)寫代碼發(fā)送郵件時(shí)候需要


生成授權(quán)碼,前期配置完成
賬號(hào):[email protected]
授權(quán)碼:iwmha*****ndcei (大家換成自己的,我怕大家把我郵箱發(fā)炸了)
端口號(hào):465
123
我們首先來發(fā)送一個(gè)簡單的郵件
SMTP.sendmail(from_addr,?to_addrs,?msg[,?mail_options,?rcpt_options]
參數(shù)說明:
from_addr: 郵件發(fā)送者地址。- to_addrs: 字符串列表,郵件發(fā)送地址。- msg: 發(fā)送消息- 這里要注意一下第三個(gè)參數(shù),msg是字符串,表示郵件。我們知道郵件一般由標(biāo)題,發(fā)信人,收件人,郵件內(nèi)容,附件等構(gòu)成,發(fā)送郵件的時(shí)候,要注意msg的格式。這個(gè)格式就是smtp協(xié)議中定義的格式。
import?smtplib
from?email.mime.text?import?MIMEText
##輸入發(fā)件人郵箱名稱
email_name?=?'你的郵箱'
#?輸入用戶授權(quán)碼
passwd?=?'你的授權(quán)碼'
#?收件人郵箱
msg_to?=?'想要發(fā)給誰'
#?郵件的正文
content?=?"我想吃饅頭"
#?設(shè)置郵件
msg?=?MIMEText(content)
msg['subject']='你想吃什么'
#設(shè)置發(fā)件人
msg['From']=?'你隔壁的小王'
#?這個(gè)參數(shù)設(shè)置要發(fā)給誰
msg['To']?=?msg_to
#連接服務(wù)器
s=?smtplib.SMTP_SSL('smtp.qq.com',465)
#?登陸我的郵箱
s.login(email_name,passwd)
#?發(fā)送郵箱
s.sendmail(email_name,msg_to,msg.as_string())
print("發(fā)送成功")
發(fā)送成功,我們?cè)诮邮盏泥]箱里收到了這封郵件。

**?怎么發(fā)送帶附件的郵件**
發(fā)送帶附件的郵件,首先要?jiǎng)?chuàng)建MIMEMultipart()實(shí)例,然后構(gòu)造附件,如果有多個(gè)附件,可依次構(gòu)造,最后利用smtplib.smtp發(fā)送。
import?smtplib
from?email.mime.text?import?MIMEText
from?email.mime.multipart?import?MIMEMultipart
##輸入發(fā)件人郵箱名稱
email_name?=?'***'
#?輸入用戶授權(quán)碼
passwd?=?'***'
#?收件人郵箱
msg_to?=?'***'
#?郵件的正文
content?=?"我想吃饅頭"
#?設(shè)置郵件
content_part?=?MIMEText(content)
#設(shè)置附件內(nèi)容對(duì)象
msg?=?MIMEMultipart()
msg['subject']='你想吃什么'
#設(shè)置發(fā)件人
msg['From']=?'你隔壁的小王'
#?這個(gè)參數(shù)設(shè)置要發(fā)給誰
msg['To']?=?msg_to
#添加附件內(nèi)容
msg.attach(content_part)
#*********************構(gòu)造附件***********
#?文本類型的附件
att1?=?MIMEText(open("./data/學(xué)習(xí)目標(biāo).txt",'rb').read(),'plain','utf-8')
#?添加頭信息,我告訴服務(wù)器,我現(xiàn)在是一個(gè)附件
att1['Content-Type']='application/octet-stream'
att1.add_header("Content-Disposition",'attachment',filename=('gbk',"",'學(xué)習(xí)目標(biāo).txt'))
#?把內(nèi)容添加到郵件中
msg.attach(att1)
#?圖片附件
att2?=?MIMEText(open("小豬豬.gif",'rb').read(),'plain','utf-8')
#?添加頭信息,我告訴服務(wù)器,我現(xiàn)在是一個(gè)附件
att2['Content-Type']='application/octet-stream'
att2.add_header("Content-Disposition",'attachment',filename=('gbk',"",'小豬豬.gif'))
#?把內(nèi)容添加到郵件中
msg.attach(att2)
#連接服務(wù)器
s=?smtplib.SMTP_SSL('smtp.qq.com',465)
#?登陸我的郵箱
s.login(email_name,passwd)
#?發(fā)送郵箱
s.sendmail(email_name,msg_to,msg.as_string())
print("發(fā)送成功")

可以看到附件發(fā)送成功,但是我們?cè)诠ぷ髦邪l(fā)郵件都是批量發(fā),還涉及到抄送人,那么我們應(yīng)該怎么做那?
#抄送人設(shè)置
acc_to?=?['***]
#?這個(gè)參數(shù)設(shè)置要發(fā)給誰
msg['To']?=?';'.join(msg_to)
#設(shè)置抄送人
msg['Cc']?=?';'.join(acc_to)
只需要我們對(duì)抄送人進(jìn)行設(shè)置即可

是不是一下就實(shí)現(xiàn)批量了
帶圖片郵件的發(fā)送
#?郵件正文
content?="""
????
????????今日匯報(bào)
????????
????????哈哈哈
????????
????????這是結(jié)尾
????
"""
image_path?=?{
????"imageid":"小豬豬.png",
????"imageid2":"***.png"
}
#?這是發(fā)件人的郵箱名稱
email_name?='***'
#?這是是用戶授權(quán)碼,qq郵箱有。?其他郵箱一般直接寫你的密碼
passwd?=?'***'
#?收件人郵箱??多人發(fā)送
msg_to?=?['***]
#?抄送人
acc_to?=?[***]
from_name?='***'
subject?='自動(dòng)化辦公開始啦'
att_file=['./data/學(xué)習(xí)目標(biāo).txt','評(píng)論詞云圖.png','自動(dòng)化辦公.ipynb','小豬豬.gif','***.jpg']
send_email(email_name?=?email_name
???????????,passwd=passwd
???????????,msg_to=msg_to
???????????,acc_to=acc_to
???????????,content=content
???????????,image_html=True
???????????,image_path?=?image_path
???????????,subject=subject
???????????,from_name?=?from_name
???????????,att_file=att_file
)

**?發(fā)送成功,是不是簡單又有趣,能大大的增大大家的工作效率,大家快試試把,最后還是想說,Python np!**


Python“寶藏級(jí)”公眾號(hào)【Python之王】專注于Python領(lǐng)域,會(huì)爬蟲,數(shù)分,C++,tensorflow和Pytorch等等。
近 2年共原創(chuàng) 100+ 篇技術(shù)文章。創(chuàng)作的精品文章系列有:
日常收集整理了一批不錯(cuò)的?Python?學(xué)習(xí)資料,有需要的小伙可以自行免費(fèi)領(lǐng)取。
獲取方式如下:公眾號(hào)回復(fù)資料。領(lǐng)取Python等系列筆記,項(xiàng)目,書籍,直接套上模板就可以用了。資料包含算法、python、算法小抄、力扣刷題手冊(cè)和 C++ 等學(xué)習(xí)資料!
