定时运行python脚本并发送邮件_python实现定时发送邮件到指定邮箱
本文實(shí)例為大家分享了python實(shí)現(xiàn)定時(shí)發(fā)送郵件到指定郵箱的具體代碼,供大家參考,具體內(nèi)容如下
整個(gè)鏈路:傳感器采集端采集數(shù)據(jù),邊緣端上傳數(shù)據(jù)庫,從數(shù)據(jù)庫拿到數(shù)據(jù)。
產(chǎn)品端有個(gè)自動(dòng)出報(bào)告的需求,并且希望自動(dòng)出的報(bào)告可以定時(shí)通過郵件發(fā)到指定郵箱中。
自動(dòng)發(fā)郵件中也有較多坑,本文特此記錄自動(dòng)發(fā)郵件中的坑。
使用:Python3.7,win10系統(tǒng),163郵箱作為發(fā)郵件方,QQ郵箱作為收郵件方。
**第一步:**申請兩個(gè)賬號分別作為發(fā)送和接收的賬號,本文用的是一個(gè)163郵箱,一個(gè)是qq郵箱。
第一個(gè)坑需要注意了,上圖是qq郵箱中的郵箱設(shè)置,需要在賬戶中開啟POP3/SMTP服務(wù)(一定要開啟,不然即使Python中的代碼都是對的,也不能正常發(fā)送郵件,因?yàn)镻ython中發(fā)郵件用的是SMTP的郵件傳輸協(xié)議包),這里還有一個(gè)坑需要注意的是:如果你把這個(gè)郵箱當(dāng)作是發(fā)送郵件的一方,還需要記住授權(quán)碼,因?yàn)镻ython中郵箱的登錄是用授權(quán)碼的而不是密碼。
在163郵箱中的設(shè)置中也將POP3/SMTP服務(wù)打開。
開啟SMTP服務(wù)后,一定要記住授權(quán)碼
**第二步:**Python編寫程序
#發(fā)送郵件模塊
import smtplib
#寫郵件模塊
import email
#定義郵件類型及內(nèi)容
"""
郵件體為多組件類型(如果不是單一發(fā)送文本或者圖片或者附件,那么就需要這個(gè)多組件類型將
其它元素打包進(jìn)來)
"""
from email.mime.multipart import MIMEMultipart
#郵件中的文本信息
from email.mime.text import MIMEText
#郵件中的圖片信息
from email.mime.image import MIMEImage
#定義郵件標(biāo)題
from email.header import Header
#################################################################################################
#設(shè)置服務(wù)器所需信息
#郵件發(fā)送方郵箱地址
sender='寫發(fā)送方郵箱地址,這里只是示意一下@163.com'
#這個(gè)是163郵箱里面POP3/SMTP開啟后的授權(quán)碼,一定注意不是163郵箱的登錄密碼
#第一次做的時(shí)候設(shè)置成郵箱登錄密碼反而郵件不能發(fā)送,改成授權(quán)碼之后才可以
password='這里寫授權(quán)碼,注意不是郵箱登錄密碼,授權(quán)碼一般是由隨機(jī)的16位字母組成'
#郵件接收方郵箱地址,注意需要[]包裹,這意味著你可以寫多個(gè)郵件地址群發(fā)
receivers=['寫接收方郵箱地址,這里只是示意一下@qq.com']
###############################################################################################
#郵件基本信息輸入
#設(shè)置總的郵件體對象,對象類型為mixed
mix_part=MIMEMultipart('mixed')
#發(fā)送者郵箱地址
mix_part['From']='寫發(fā)送方郵箱地址,這里只是示意一下@163.com'
#接收者郵箱地址
mix_part['To']='寫接收方郵箱地址,這里只是示意一下@qq.com'
#郵件標(biāo)題
subject='2020-5-21測試報(bào)告'
mix_part['subject']=Header(subject,'utf-8')
#################################################################################################
#構(gòu)造文本內(nèi)容,也就是郵件中正文部分的內(nèi)容
"""
三個(gè)參數(shù):
第一個(gè)為文本內(nèi)容,第二個(gè)plain設(shè)置文本格式,第三個(gè)utf-8設(shè)置編碼
"""
message_info='python郵件發(fā)送測試'
message=MIMEText(message_info,'plain','utf-8')
#通過多組件類型將文本內(nèi)容打包進(jìn)來
mix_part.attach(message)
###############################################################################################
#郵件中附件文本的構(gòu)造
#設(shè)置附件文本的路徑,除了改路徑,其它幾行代碼基本不需要改動(dòng)
txt_path=r'C:\Users\Desktop\測試文件.pdf'
txt_file = open(txt_path, 'rb').read()
txt = MIMEText(txt_file, 'base64', 'utf-8')
txt["Content-Type"] = 'application/octet-stream'
# 命名發(fā)送的附件名稱
txt.add_header('Content-Disposition', 'attachment', filename='測試報(bào)告.pdf')
#通過多組件類型將文本附件打包進(jìn)來
mix_part.attach(txt)
####################################################################################
# 郵件中圖片附件的構(gòu)造
#設(shè)置附件圖片的路徑,除了改路徑,其它幾行代碼基本不需要改動(dòng)
image_path=r'C:\Users\Desktop\images\test.png'
image_file = open(image_path, 'rb').read()
image = MIMEImage(image_file)
image.add_header('Content-ID', '')
#filename需要改成上傳的圖片名稱
image["Content-Disposition"] = 'attachment; filename="test.png"'
#通過多組件類型將圖片附件打包進(jìn)來
mix_part.attach(image)
###################################################################################################
try:
"""
qq郵箱服務(wù)器地址的設(shè)置,如果是用qq郵箱發(fā)郵件則需要設(shè)置,
本文是用163郵箱發(fā)郵件,所以只需要設(shè)置163郵箱服務(wù)器地址即可
"""
# smtpObj=smtplib.SMTP('smtp.exmail.qq.com')
#163郵箱服務(wù)器地址的設(shè)置
smtpObj = smtplib.SMTP('smtp.163.com')
#登錄:賬號,密碼
smtpObj.login(sender,password)
smtpObj.sendmail(sender,receivers,mix_part.as_string())
smtpObj.quit()
print('郵件發(fā)送成功')
except smtplib.SMTPException:
print('Error:無法發(fā)送郵件')
第三步:電腦設(shè)置定時(shí)發(fā)送郵件
win+r調(diào)出運(yùn)行窗口輸入taskschd.msc
創(chuàng)建基本任務(wù),然后按照提示一步步點(diǎn)下去即可
按照自己的需求,我這里選擇的是一次,然后設(shè)置啟動(dòng)程序的未來時(shí)間即可
程序或腳本一欄不需要改變,起始于(可選)指的是Python的路徑,添加參數(shù)(可選)指的是剛才編好的自動(dòng)發(fā)郵件程序的路徑。
點(diǎn)擊完成即可。
總結(jié)如下:
(1)需要將發(fā)郵件和接收郵件郵箱設(shè)置中的SMTP服務(wù)打開,并記住授權(quán)碼
(2)Python編寫程序按步驟一步步來,應(yīng)該沒有啥問題
(3)電腦中設(shè)置自動(dòng)運(yùn)行程序時(shí),需要注意設(shè)置的起始于(可選)以及添加參數(shù)(可選)的路徑
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
總結(jié)
以上是生活随笔為你收集整理的定时运行python脚本并发送邮件_python实现定时发送邮件到指定邮箱的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python利用opencv去除图片lo
- 下一篇: 银元宝多少钱啊?