Python自動化辦公之定時發(fā)送郵件的實(shí)現(xiàn)
該章節(jié)為 Python自動化辦公篇 的最后一章,通過定時任務(wù)發(fā)送郵件的方式學(xué)習(xí)定時模塊的使用 --> schedule 。(該章內(nèi)容篇幅較少)
定時模塊的使用
python中有一個輕量級的定時任務(wù)調(diào)度的庫:schedule。它可以完成每分鐘,每小時,每天,周幾,特定日期的定時任務(wù)。因此十分方便我們執(zhí)行一些輕量級的定時任務(wù)。
schedule 模塊的介紹
定時任務(wù):
在 特定的時間 自動的執(zhí)行一些任務(wù)的功能, python 中的 schedule 模塊可以使我們方便簡單的使用定時任務(wù)。
schedule 的安裝:
pip install schedule 如果安裝失敗,嘗試一下更換國內(nèi)的鏡像源。
schedule 模塊各種時間用法
每過多少分鐘執(zhí)行一次 func函數(shù) ,args是函數(shù)的參數(shù) :
schedule.every(count).minutes.do(func, args)
每天的 10:20 執(zhí)行一次 func 函數(shù),args是函數(shù)的參數(shù) :
schedule.every().day.at("10:20").do(func, args)
schedule 模塊支持的時間如下:
類型 | 說明 |
---|---|
minutes | 分鐘 |
seconds | 秒 |
hour | 小時 |
day | 天 |
week | 周 |
schedule
模塊支持的時間遠(yuǎn)不止這些,這里至介紹了常用的幾個時間方式。
schedule 的啟動
類型 | 說明 |
---|---|
schedule.run_pending | 執(zhí)行 |
PS:要放在 "while" 中執(zhí)行,并且利用時間至少 1秒 的阻塞。
代碼示例如下:
# coding:utf-8 import smtplib import time import schedule # pip install schedule from email.mime.text import MIMEText from email.header import Header from email.mime.multipart import MIMEMultipart ''' 第三方的 smpt [腳本中涉及的郵箱地址都是假的,請使用自己的真實(shí)郵箱地址進(jìn)行測試] ''' mail_host = "smtp.sina.com" # 設(shè)置郵箱服務(wù)器 mail_user = "conan868242" # 設(shè)置自己的郵箱 mail_pass = "cb997b01a87232b2" # 這里就是郵箱的口令,也就是授權(quán)碼;不是密碼。 sender = "conan868242@sina.com" # 定義發(fā)送者郵箱(其實(shí)就是自己) receivers = ["3241716373@qq.com"] # 定義接受者郵箱(可以是多個接收者) # message = MIMEText('<p style="color:red;">這是一個測試</p>', "html", "utf-8") # 定義郵件內(nèi)容;"plain"是格式,表示是普通的文件內(nèi)容 message = MIMEMultipart() # 定義帶有附件的郵件對象 message["From"] = Header(sender) # 在message內(nèi)定義發(fā)送信息 --> 發(fā)送者 message["Subject"] = Header("Python 測試郵件發(fā)送", "utf-8") # 在message內(nèi)定義發(fā)送信息的標(biāo)題 # print("加密后的發(fā)送內(nèi)容\n", message.as_string()) # 打印輸出加密后的發(fā)送內(nèi)容 attr = MIMEText(open('send.py', 'rb').read(), 'base64', 'utf-8') # 定義帶有附件的郵件發(fā)送內(nèi)容;(默認(rèn)是一種屬性); # 以 open 的形式將需要發(fā)送的文件讀出來 # 定義內(nèi)容為"base64"格式 attr['Content-Type'] = 'application/octet-stream' # 針對屬性進(jìn)行格式上的定義;"application/octet-stream"代表著流上的一種協(xié)議 # 即定義 "附件" 的類型 attr['Content-Disposition'] = 'attachment;filename="send.py"' # 針對傳輸?shù)母郊x一個名稱 message.attach(attr) # 利用 "message" 的 "attach" 函數(shù)將 "附件" 添加進(jìn)去 message = MIMEText('這是一個帶附件的郵件', "plain", "utf-8") # 定義郵件文字內(nèi)容(即添加郵件的主內(nèi)容) def send(): print("郵件開始發(fā)送") try: # 捕獲發(fā)送郵件的異常 smtpObj = smtplib.SMTP() # 實(shí)例化 SMTP 協(xié)議對象 smtpObj.connect(mail_host, 25) # 鏈接 SMTP 服務(wù)器 smtpObj.login(mail_user, mail_pass) # 登錄郵箱驗(yàn)證 smtpObj.sendmail(sender, receivers, message.as_string()) # 發(fā)送郵件; "message" 通過 "as_string()" 進(jìn)行發(fā)送內(nèi)容字符串的加密 except smtplib.SMTPException as error: print("error:{}".format(error)) if __name__ == '__main__': schedule.every(10).seconds.do(send) # 每隔十秒鐘發(fā)送一次郵件 while True: # 啟動定時任務(wù),延時1秒。 schedule.run_pending() time.sleep(1)
PS:可以考慮加上發(fā)送郵件和定時任務(wù)之間的時間差,進(jìn)行定時任務(wù)的調(diào)試,這里我就偷懶不寫了哈。
運(yùn)行結(jié)果如下:
到此這篇關(guān)于Python自動化辦公之定時發(fā)送郵件的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Python定時發(fā)送郵件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python傳統(tǒng)圖像處理之皮膚區(qū)域檢測詳解
這篇文章主要介紹了在不同情景下對傳統(tǒng)圖像進(jìn)行皮膚區(qū)域檢測,文章中的代碼具有一定的參考價值,感興趣的小伙伴可以跟隨小編一起來學(xué)習(xí)學(xué)習(xí)2021-12-12關(guān)于Python3的import問題(pycharm可以運(yùn)行命令行import錯誤)
這篇文章主要介紹了關(guān)于Python3的import問題(pycharm可以運(yùn)行命令行import錯誤),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11基于Python+Matplotlib實(shí)現(xiàn)直方圖的繪制
Matplotlib是Python的繪圖庫,它能讓使用者很輕松地將數(shù)據(jù)圖形化,并且提供多樣化的輸出格式。本文將為大家介紹如何用matplotlib繪制直方圖,感興趣的朋友可以學(xué)習(xí)一下2022-04-04Python基于BeautifulSoup和requests實(shí)現(xiàn)的爬蟲功能示例
這篇文章主要介紹了Python基于BeautifulSoup和requests實(shí)現(xiàn)的爬蟲功能,結(jié)合實(shí)例形式分析了Python使用BeautifulSoup和requests庫爬取網(wǎng)站指定信息的相關(guān)操作技巧,需要的朋友可以參考下2019-08-08pandas數(shù)值排序的實(shí)現(xiàn)實(shí)例
篩選和排序是Excel中使用頻率最多的功能,本文主要介紹了pandas數(shù)值排序的實(shí)現(xiàn)實(shí)例,文中通過示例代碼介紹的非常詳細(xì),,感興趣的可以了解一下2021-07-07