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