python實現(xiàn)定時發(fā)送郵件到指定郵箱
本文實例為大家分享了python實現(xiàn)定時發(fā)送郵件到指定郵箱的具體代碼,供大家參考,具體內(nèi)容如下
整個鏈路:傳感器采集端采集數(shù)據(jù),邊緣端上傳數(shù)據(jù)庫,從數(shù)據(jù)庫拿到數(shù)據(jù)。
產(chǎn)品端有個自動出報告的需求,并且希望自動出的報告可以定時通過郵件發(fā)到指定郵箱中。
自動發(fā)郵件中也有較多坑,本文特此記錄自動發(fā)郵件中的坑。
使用:Python3.7,win10系統(tǒng),163郵箱作為發(fā)郵件方,QQ郵箱作為收郵件方。
**第一步:**申請兩個賬號分別作為發(fā)送和接收的賬號,本文用的是一個163郵箱,一個是qq郵箱。

第一個坑需要注意了,上圖是qq郵箱中的郵箱設(shè)置,需要在賬戶中開啟POP3/SMTP服務(wù)(一定要開啟,不然即使Python中的代碼都是對的,也不能正常發(fā)送郵件,因為Python中發(fā)郵件用的是SMTP的郵件傳輸協(xié)議包),這里還有一個坑需要注意的是:如果你把這個郵箱當(dāng)作是發(fā)送郵件的一方,還需要記住授權(quán)碼,因為Python中郵箱的登錄是用授權(quán)碼的而不是密碼。

在163郵箱中的設(shè)置中也將POP3/SMTP服務(wù)打開。


開啟SMTP服務(wù)后,一定要記住授權(quán)碼
**第二步:**Python編寫程序
#發(fā)送郵件模塊
import smtplib
#寫郵件模塊
import email
#定義郵件類型及內(nèi)容
"""
郵件體為多組件類型(如果不是單一發(fā)送文本或者圖片或者附件,那么就需要這個多組件類型將
其它元素打包進(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'
#這個是163郵箱里面POP3/SMTP開啟后的授權(quán)碼,一定注意不是163郵箱的登錄密碼
#第一次做的時候設(shè)置成郵箱登錄密碼反而郵件不能發(fā)送,改成授權(quán)碼之后才可以
password='這里寫授權(quán)碼,注意不是郵箱登錄密碼,授權(quán)碼一般是由隨機(jī)的16位字母組成'
#郵件接收方郵箱地址,注意需要[]包裹,這意味著你可以寫多個郵件地址群發(fā)
receivers=['寫接收方郵箱地址,這里只是示意一下@qq.com']
###############################################################################################
#郵件基本信息輸入
#設(shè)置總的郵件體對象,對象類型為mixed
mix_part=MIMEMultipart('mixed')
#發(fā)送者郵箱地址
mix_part['From']='寫發(fā)送方郵箱地址,這里只是示意一下@163.com<寫發(fā)送方郵箱地址,這里只是示意一下@163.com>'
#接收者郵箱地址
mix_part['To']='寫接收方郵箱地址,這里只是示意一下@qq.com'
#郵件標(biāo)題
subject='2020-5-21測試報告'
mix_part['subject']=Header(subject,'utf-8')
#################################################################################################
#構(gòu)造文本內(nèi)容,也就是郵件中正文部分的內(nèi)容
"""
三個參數(shù):
第一個為文本內(nèi)容,第二個plain設(shè)置文本格式,第三個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è)置附件文本的路徑,除了改路徑,其它幾行代碼基本不需要改動
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='測試報告.pdf')
#通過多組件類型將文本附件打包進(jìn)來
mix_part.attach(txt)
####################################################################################
# 郵件中圖片附件的構(gòu)造
#設(shè)置附件圖片的路徑,除了改路徑,其它幾行代碼基本不需要改動
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', '<image1>')
#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è)置定時發(fā)送郵件
win+r調(diào)出運行窗口輸入taskschd.msc

創(chuàng)建基本任務(wù),然后按照提示一步步點下去即可

按照自己的需求,我這里選擇的是一次,然后設(shè)置啟動程序的未來時間即可



程序或腳本一欄不需要改變,起始于(可選)指的是Python的路徑,添加參數(shù)(可選)指的是剛才編好的自動發(fā)郵件程序的路徑。

點擊完成即可。
總結(jié)如下:
(1)需要將發(fā)郵件和接收郵件郵箱設(shè)置中的SMTP服務(wù)打開,并記住授權(quán)碼
(2)Python編寫程序按步驟一步步來,應(yīng)該沒有啥問題
(3)電腦中設(shè)置自動運行程序時,需要注意設(shè)置的起始于(可選)以及添加參數(shù)(可選)的路徑
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 自動在Windows中運行Python腳本并定時觸發(fā)功能實現(xiàn)
- 實現(xiàn)Windows下設(shè)置定時任務(wù)來運行python腳本
- 如何給windows設(shè)置定時任務(wù)并運行python腳本
- python 實現(xiàn)定時任務(wù)的四種方式
- python獲取指定時間段內(nèi)特定規(guī)律的日期列表
- python中用Scrapy實現(xiàn)定時爬蟲的實例講解
- Python爬蟲定時計劃任務(wù)的幾種常見方法(推薦)
- python實現(xiàn)定時發(fā)送郵件
- python腳本定時發(fā)送郵件
- Python實現(xiàn)FTP文件定時自動下載的步驟
- python爬蟲調(diào)度器用法及實例代碼
- scrapy處理python爬蟲調(diào)度詳解
- 簡單的Python調(diào)度器Schedule詳解
- python編寫網(wǎng)頁爬蟲腳本并實現(xiàn)APScheduler調(diào)度
- Python使用定時調(diào)度任務(wù)的方式
相關(guān)文章
解決Jupyter-notebook不彈出默認(rèn)瀏覽器的問題
這篇文章主要介紹了解決Jupyter-notebook不彈出默認(rèn)瀏覽器的問題,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03
Python利用numpy實現(xiàn)三層神經(jīng)網(wǎng)絡(luò)的示例代碼
這篇文章主要介紹了Python利用numpy實現(xiàn)三層神經(jīng)網(wǎng)絡(luò)的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
如何利用python批量提取txt文本中所需文本并寫入excel
最近幫人寫了幾個小程序,所以記錄下,下面這篇文章主要給大家介紹了關(guān)于如何利用python批量提取txt文本中所需文本并寫入excel的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
Python實現(xiàn)獲取系統(tǒng)臨時目錄及臨時文件的方法示例
這篇文章主要介紹了Python實現(xiàn)獲取系統(tǒng)臨時目錄及臨時文件的方法,結(jié)合實例形式分析了Python文件與目錄操作相關(guān)函數(shù)與使用技巧,需要的朋友可以參考下2019-06-06
Python基礎(chǔ)第三方模塊requests openpyxl
這篇文章主要為大家介紹了Python基礎(chǔ)第三方模塊requests openpyxl使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
使用Dajngo 通過代碼添加xadmin用戶和權(quán)限(組)
這篇文章主要介紹了使用Dajngo 通過代碼添加xadmin用戶和權(quán)限(組),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07

