Python實(shí)現(xiàn)定時(shí)發(fā)送監(jiān)控郵件
不管是在信貸領(lǐng)域還是支付領(lǐng)域,作為一個(gè)風(fēng)控人員,我們都需要對(duì)部署的策略模型進(jìn)行監(jiān)控,信貸領(lǐng)域可能還需要對(duì)客戶的逾期表現(xiàn)進(jìn)行監(jiān)控。這時(shí),如果我們能用python自動(dòng)連接數(shù)據(jù)庫(kù),對(duì)策略、模型、貸后表現(xiàn)等數(shù)據(jù)進(jìn)行分析處理,輸出標(biāo)準(zhǔn)表格或圖片到固定文件夾中。再用python自動(dòng)定時(shí)給領(lǐng)導(dǎo)和同事發(fā)送監(jiān)控郵件,就可以讓相關(guān)人員及時(shí)了策略模型的運(yùn)行狀態(tài)、項(xiàng)目的逾期動(dòng)態(tài),是一件很有意義的事。
本文著重講解如何用python連接郵箱,自動(dòng)發(fā)送郵件,至于python連接數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)處理模塊,后續(xù)有時(shí)間了再跟大家分享。
一、自動(dòng)定時(shí)任務(wù)運(yùn)行詳情
首先來(lái)看下,自動(dòng)定時(shí)任務(wù)發(fā)送郵件的運(yùn)行詳情,視頻鏈接
二、開(kāi)啟POP3/SMTP服務(wù)
在用python連接郵箱時(shí),需要開(kāi)啟POP3/SMTP服務(wù),本文以qq郵箱為例進(jìn)行講解,其它郵箱開(kāi)啟方法請(qǐng)自行百度。首先登錄網(wǎng)頁(yè)版qq郵箱—>點(diǎn)擊設(shè)置—>點(diǎn)擊帳戶—>下拉找到POP3/IMAP/SMTP/ Exchange/CardDAV/CalDAV服務(wù)。

然后開(kāi)啟POP3/SMTP服務(wù)(根據(jù)指示步驟操作即可)。

開(kāi)啟POP3/SMTP服務(wù)主要是想獲取代碼中用到的token,是一串類(lèi)似字符串的文本,大家在開(kāi)啟服務(wù)的過(guò)程中,記得保存。
三、發(fā)送郵件
使用python發(fā)送郵件時(shí),主要用到smtplib和email庫(kù),這兩個(gè)庫(kù)是自帶的,直接導(dǎo)入即可。
1 導(dǎo)入庫(kù)
import os import email import smtplib import datetime from email.header import Header from email.mime.text import MIMEText from email.mime.image import MIMEImage from email.mime.multipart import MIMEMultipart #加載發(fā)送郵件需要用到的庫(kù) os.chdir(r"E:\自動(dòng)化郵件") #設(shè)置發(fā)送郵件時(shí)附件文件存放的地址
其中smtplib模塊主要負(fù)責(zé)發(fā)送郵件,email模塊主要負(fù)責(zé)構(gòu)建郵件。os.chdir中的文件路徑記得替換成你存放郵件附件的路徑。
2 設(shè)置郵件內(nèi)容
平常我們發(fā)送郵件,主要需填寫(xiě)收件人、郵件主題、郵件正文、附件等信息。使用python發(fā)送郵件,同樣也是填寫(xiě)這些信息,不過(guò)是在語(yǔ)句中注明。
mail_sender = "2275885700@qq.com" # 發(fā)送者郵箱名
mail_license = '****************' # 發(fā)送者郵箱授權(quán)碼,即開(kāi)啟POP3/SMTP服務(wù)獲取的token,需替換成你的郵箱
mail_host = "smtp.qq.com" # SMTP服務(wù)器,這里為qq郵箱,若為163郵箱請(qǐng)用163替換qq
mail_receivers = ["2275885700@qq.com","wawoxzy@163.com"] #收件人郵箱
mail = MIMEMultipart('related') # 設(shè)置郵件主體
mail["From"] = "sender_name<2275885700@qq.com>" # 設(shè)置發(fā)送者郵箱
mail["To"] = "receiver_1_name<2275885700@qq.com>,receiver_2_name<wawoxzy@163.com>" #設(shè)置接受者郵箱
subject_content = '【日?qǐng)?bào)】風(fēng)險(xiǎn)監(jiān)測(cè)' # 設(shè)置郵件主題
mail["Subject"] = Header(subject_content,'utf-8') # 添加郵件主題
body_content = """
各位好,
這是風(fēng)險(xiǎn)監(jiān)測(cè)日?qǐng)?bào),請(qǐng)查收!
BestRegards,
謝XX
""" # 設(shè)置郵件正文
message_text = MIMEText(body_content,"plain","utf-8") # 設(shè)置正文內(nèi)容、文本格式、編碼方式
mail.attach(message_text) # 向MIMEMultipart對(duì)象中添加文本對(duì)象
注意:mail_license中的值需替換成你在開(kāi)啟POP3/SMTP服務(wù)時(shí)獲取的token。以上語(yǔ)句中的內(nèi)容,可根據(jù)需要自行調(diào)整,如有疑問(wèn)可參考后面的備注信息。
3 添加附件
附件信息一般是圖片和數(shù)據(jù)文檔,故本文對(duì)這兩種附件進(jìn)行闡述,你只需把名字換成你的附件名即可。
image_picture = open('yk2.jpg','rb') # 打開(kāi)附件圖片
message_image = MIMEImage(image_picture.read()) # 設(shè)置讀取獲取的二進(jìn)制數(shù)據(jù)
#message_image.add_header('Content-ID','<image1>')
message_image["Content-Disposition"] = 'attachment; filename="yk2.jpg"' # 設(shè)置附件圖片名稱
mail.attach(message_image) # 把圖片添加到郵件中去
image_picture.close() # 關(guān)閉剛才打開(kāi)的圖片
mail.attach(message_image) # 把圖片添加為郵件附件
atta = MIMEText(open('BlackFriday.csv', 'rb').read(),'base64','utf-8') # 添加數(shù)據(jù)(csv、excel等)附件
atta["Content-Disposition"] = 'attachment; filename="BlackFriday.csv"' # 設(shè)置數(shù)據(jù)(csv、excel等)附件名稱
mail.attach(atta) # 把csv附件添加到郵件中去
4 發(fā)送郵件
郵件正文和附件都設(shè)置好后,就可以發(fā)送郵件啦,具體語(yǔ)句如下:
smtp = smtplib.SMTP() # 創(chuàng)建SMTP對(duì)象
smtp.connect(mail_host, 25) # 設(shè)置發(fā)件人郵箱的域名和端口,端口地址為25
smtp.set_debuglevel(1) # 打印和SMTP服務(wù)器交互的所有信息
smtp.login(mail_sender,mail_license) # 根據(jù)郵箱地址和郵箱收起碼登錄郵箱
smtp.sendmail(mail_sender, mail_receivers, mail.as_string()) # 發(fā)送郵件,并設(shè)置郵件內(nèi)容格式為str
now_time = datetime.datetime.now().strftime('%Y-%m-%d') # 獲取當(dāng)前時(shí)間
print(now_time+" 日監(jiān)控郵件發(fā)送成功") # 打印某日成功發(fā)送郵件記錄
smtp.quit() # 關(guān)閉SMTP對(duì)象
至此,郵件已發(fā)送完畢,接著我們來(lái)看下郵件發(fā)送效果吧。
5 郵件發(fā)送效果
python發(fā)送的郵件和我們手動(dòng)發(fā)送的郵件是一樣的,具體可見(jiàn)如下圖片。

接下來(lái),我們看看如何設(shè)置定時(shí)任務(wù),每天定時(shí)發(fā)送郵件吧。
四、設(shè)置定時(shí)任務(wù)
在前面兩節(jié)中介紹了如何用python自動(dòng)發(fā)送郵件。本節(jié)介紹如何設(shè)置定時(shí)任務(wù),在固定時(shí)間去抓取固定文件中的內(nèi)容。
1 設(shè)置定時(shí)任務(wù)的具體步驟
首先,點(diǎn)擊windows桌面左下角的搜索菜單,輸入“控制面板”,就會(huì)在最佳匹配中出現(xiàn)控制面板,點(diǎn)擊控制面板。

接著,在控制面板的搜索框輸入”任務(wù)“兩個(gè)字,就會(huì)出現(xiàn)管理工具和計(jì)劃任務(wù),點(diǎn)擊計(jì)劃任務(wù)。

接著,點(diǎn)擊創(chuàng)建基本任務(wù),填寫(xiě)名稱和描述(可自定義),點(diǎn)擊下一步默認(rèn)為每天,如需改成每周,自行選擇即可。

點(diǎn)擊下一步,設(shè)置任務(wù)開(kāi)始的時(shí)間,點(diǎn)擊下一步,選擇啟動(dòng)程序,再點(diǎn)擊下一步。接著點(diǎn)擊瀏覽,選擇需要定時(shí)是python腳本,最后點(diǎn)擊完成即可。

2 設(shè)置定時(shí)任務(wù)的教學(xué)視頻
最后,來(lái)看下設(shè)置定時(shí)任務(wù)的教學(xué)視頻,大家可以根據(jù)具體步驟參考視頻進(jìn)行設(shè)置。
至此,應(yīng)用python每天自動(dòng)發(fā)送郵件已講解完畢,感興趣的同學(xué)可以自己跟著本文,自行實(shí)現(xiàn)一遍。
相關(guān)文章
Python實(shí)現(xiàn)的本地文件搜索功能示例【測(cè)試可用】
這篇文章主要介紹了Python實(shí)現(xiàn)的本地文件搜索功能,涉及Python針對(duì)文件與目錄的遍歷、判斷、編碼轉(zhuǎn)換、查找等相關(guān)操作技巧,需要的朋友可以參考下2018-05-05
Keras:Unet網(wǎng)絡(luò)實(shí)現(xiàn)多類(lèi)語(yǔ)義分割方式
本文主要利用U-Net網(wǎng)絡(luò)結(jié)構(gòu)實(shí)現(xiàn)了多類(lèi)的語(yǔ)義分割,并展示了部分測(cè)試效果,希望對(duì)你有用!2020-06-06
TensorFlow卷積神經(jīng)網(wǎng)絡(luò)之使用訓(xùn)練好的模型識(shí)別貓狗圖片
今天小編就為大家分享一篇關(guān)于TensorFlow卷積神經(jīng)網(wǎng)絡(luò)之使用訓(xùn)練好的模型識(shí)別貓狗圖片,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03
python?selenium模擬點(diǎn)擊問(wèn)題解決方案
這篇文章主要介紹了python?selenium模擬點(diǎn)擊問(wèn)題,涉及到安裝谷歌瀏覽器和瀏覽器驅(qū)動(dòng)的相關(guān)知識(shí)介紹,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05
python matplotlib中文顯示參數(shù)設(shè)置解析
這篇文章主要介紹了python matplotlib中文顯示參數(shù)設(shè)置解析,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12
Python靜態(tài)Web服務(wù)器面向?qū)ο筇幚砜蛻舳苏?qǐng)求
這篇文章主要為大家介紹了Python面向?qū)ο髮?shí)現(xiàn)靜態(tài)Web服務(wù)器處理客戶端請(qǐng)求示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06

