Python自動化辦公之定時發(fā)送郵件的實現(xiàn)
該章節(jié)為 Python自動化辦公篇 的最后一章,通過定時任務發(fā)送郵件的方式學習定時模塊的使用 --> schedule 。(該章內(nèi)容篇幅較少)
定時模塊的使用
python中有一個輕量級的定時任務調(diào)度的庫:schedule。它可以完成每分鐘,每小時,每天,周幾,特定日期的定時任務。因此十分方便我們執(zhí)行一些輕量級的定時任務。
schedule 模塊的介紹
定時任務:
在 特定的時間 自動的執(zhí)行一些任務的功能, python 中的 schedule 模塊可以使我們方便簡單的使用定時任務。
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 模塊支持的時間遠不止這些,這里至介紹了常用的幾個時間方式。
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") # 定義郵件內(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ā)送信息的標題
# print("加密后的發(fā)送內(nèi)容\n", message.as_string()) # 打印輸出加密后的發(fā)送內(nèi)容
attr = MIMEText(open('send.py', 'rb').read(), 'base64', 'utf-8') # 定義帶有附件的郵件發(fā)送內(nèi)容;(默認是一種屬性);
# 以 open 的形式將需要發(fā)送的文件讀出來
# 定義內(nèi)容為"base64"格式
attr['Content-Type'] = 'application/octet-stream' # 針對屬性進行格式上的定義;"application/octet-stream"代表著流上的一種協(xié)議
# 即定義 "附件" 的類型
attr['Content-Disposition'] = 'attachment;filename="send.py"' # 針對傳輸?shù)母郊x一個名稱
message.attach(attr) # 利用 "message" 的 "attach" 函數(shù)將 "附件" 添加進去
message = MIMEText('這是一個帶附件的郵件', "plain", "utf-8") # 定義郵件文字內(nèi)容(即添加郵件的主內(nèi)容)
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ā)送內(nèi)容字符串的加密
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ā)送郵件和定時任務之間的時間差,進行定時任務的調(diào)試,這里我就偷懶不寫了哈。
運行結(jié)果如下:

到此這篇關于Python自動化辦公之定時發(fā)送郵件的實現(xiàn)的文章就介紹到這了,更多相關Python定時發(fā)送郵件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python傳統(tǒng)圖像處理之皮膚區(qū)域檢測詳解
這篇文章主要介紹了在不同情景下對傳統(tǒng)圖像進行皮膚區(qū)域檢測,文章中的代碼具有一定的參考價值,感興趣的小伙伴可以跟隨小編一起來學習學習2021-12-12
關于Python3的import問題(pycharm可以運行命令行import錯誤)
這篇文章主要介紹了關于Python3的import問題(pycharm可以運行命令行import錯誤),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11
基于Python+Matplotlib實現(xiàn)直方圖的繪制
Matplotlib是Python的繪圖庫,它能讓使用者很輕松地將數(shù)據(jù)圖形化,并且提供多樣化的輸出格式。本文將為大家介紹如何用matplotlib繪制直方圖,感興趣的朋友可以學習一下2022-04-04
Python基于BeautifulSoup和requests實現(xiàn)的爬蟲功能示例
這篇文章主要介紹了Python基于BeautifulSoup和requests實現(xiàn)的爬蟲功能,結(jié)合實例形式分析了Python使用BeautifulSoup和requests庫爬取網(wǎng)站指定信息的相關操作技巧,需要的朋友可以參考下2019-08-08

