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

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

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


生成授權(quán)碼,前期配置完成
賬號(hào):3203068752@qq.com
授權(quán)碼:iwmha*****ndcei (大家換成自己的,我怕大家把我郵箱發(fā)炸了)
端口號(hào):465
123
我們首先來(lái)發(fā)送一個(gè)簡(jiǎn)單的郵件
SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options]
參數(shù)說(shuō)明:
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ā)給誰(shuí)'
# 郵件的正文
content = "我想吃饅頭"
# 設(shè)置郵件
msg = MIMEText(content)
msg['subject']='你想吃什么'
#設(shè)置發(fā)件人
msg['From']= '你隔壁的小王'
# 這個(gè)參數(shù)設(shè)置要發(fā)給誰(shuí)
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ā)給誰(shuí)
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ā)給誰(shuí) msg['To'] = ';'.join(msg_to) #設(shè)置抄送人 msg['Cc'] = ';'.join(acc_to)
只需要我們對(duì)抄送人進(jìn)行設(shè)置即可

是不是一下就實(shí)現(xiàn)批量了
帶圖片郵件的發(fā)送
# 郵件正文
content ="""
<html>
<body>
<h1>今日匯報(bào)</h1>
<img src='cid:imageid' alt='imageid'>
<p>哈哈哈</p>
<img src='cid:imageid2' alt='imageid2'>
這是結(jié)尾
</body>
</html>
"""
image_path = {
"imageid":"小豬豬.png",
"imageid2":"***.png"
}
# 這是發(fā)件人的郵箱名稱
email_name ='***'
# 這是是用戶授權(quán)碼,qq郵箱有。 其他郵箱一般直接寫你的密碼
passwd = '***'
# 收件人郵箱 多人發(fā)送
msg_to = ['***]
# 抄送人
acc_to = [***]
from_name ='***'
subject ='自動(dòng)化辦公開(kāi)始啦'
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
)
以上就是Python實(shí)現(xiàn)自動(dòng)化郵件發(fā)送過(guò)程詳解的詳細(xì)內(nèi)容,更多關(guān)于Python自動(dòng)化郵件發(fā)送的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
解決py2exe打包后,總是多顯示一個(gè)DOS黑色窗口的問(wèn)題
今天小編就為大家分享一篇解決py2exe打包后,總是多顯示一個(gè)DOS黑色窗口的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06
利用Python開(kāi)發(fā)實(shí)現(xiàn)簡(jiǎn)單的記事本
最近想對(duì)python加深學(xué)習(xí)一下,同時(shí)也是想試著做一些東西,所以使用python,結(jié)合Tkinter來(lái)做一個(gè)簡(jiǎn)單的跨平臺(tái)記事本。最終實(shí)現(xiàn)的記事本如下,也算是麻雀雖小,五臟俱全了,之后也是會(huì)繼續(xù)完善的。文中通過(guò)圖文及示例代碼介紹的很詳細(xì),有需要的朋友們可以參考借鑒。2016-11-11
PyCharm-錯(cuò)誤-找不到指定文件python.exe的解決方法
今天小編就為大家分享一篇PyCharm-錯(cuò)誤-找不到指定文件python.exe的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07
Python實(shí)現(xiàn)過(guò)濾單個(gè)Android程序日志腳本分享
這篇文章主要介紹了Python實(shí)現(xiàn)過(guò)濾單個(gè)Android程序日志腳本分享,本文講解了原理、實(shí)現(xiàn)代碼、使用方法、最新代碼等內(nèi)容,需要的朋友可以參考下2015-01-01
雙向RNN:bidirectional_dynamic_rnn()函數(shù)的使用詳解
今天小編就為大家分享一篇雙向RNN:bidirectional_dynamic_rnn()函數(shù)的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01

