日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

定时运行python脚本并发送邮件_python实现定时发送邮件到指定邮箱

發(fā)布時(shí)間:2023/12/1 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 定时运行python脚本并发送邮件_python实现定时发送邮件到指定邮箱 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文實(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。