利用 Window 計劃任務實現郵箱監(jiān)控
想要接收郵件,以往的操作首先要先登錄到郵箱后,查看是否有新的郵件。如果不想時刻盯著郵箱,又不想錯過新的郵件,那么就可以體驗下利用 Windows 計劃任務實現郵箱監(jiān)控,當有新郵件時,自動給出提醒。
1. 整體思路
- 通過 Python zmail 模塊實現郵件讀?。?/li>
- 將最新一封郵件 ID 進行保存,第二次執(zhí)行時比對郵件 ID,判斷是否是新郵件;
- 通過 Python pymsgbox 模塊實現 window 彈窗提示;
- 配置 Window 計劃任務,每 1 分鐘執(zhí)行一次。
2. 實現步驟
步驟 1:通過 zmail 實現最新郵件接收
import zmail
#獲取最新郵件并打印郵件信息
server = zmail.server('xxxxx@qq.com', 'mdgxgiwpnkspbxgx')
mail = server.get_latest()
zmail.show(mail)
print(mail["id"])
print(mail["from"])
print(mail["to"])
print(mail["subject"])
print(mail["context_text"])
print(mail["context_html"])
代碼解釋:首先通過 zmail 實現最新一封郵件的接收,這里的代碼同前面小節(jié)中接收郵件代碼一致。
步驟 2:新舊郵件比對
想要提示用戶有最新的郵件,就要把最后一封郵件的信息進行記錄,在指定時間后,拿著兩封郵件的信息進行比對,這里我們使用的郵件 ID(注意 ID 并不唯一,如要確保一定的準確,可以用 ID 結合郵件標題等多方面信息)
記錄郵件信息我們選擇在這里放在了一個 txt 文件中,每次先讀取再寫入
old_mailid = open('id.txt', 'r').readline()
# 寫入新郵件ID
with open('id.txt', mode='w+', encoding='utf-8') as f:
f.write(str(mail_id))
步驟 3:實現 window 彈窗提示
像這種操作早有前人已經替我們完成了,這種庫有很多,本小節(jié)采用的是 pymsgbox, 使用前注意通過 pip install pymsgbox 進行安裝
先了解下 pymsgbox 彈窗的多種形式
pymsgbox.alert(text='', title='', button='OK')
pymsgbox.confirm(text='', title='', buttons=['OK', 'Cancel'])
pymsgbox.prompt(text='', title='' , default='')
pymsgbox.password(text='', title='', default='', mask='*')
效果依次如下圖所示。
顯然我們這里用不到太復雜的彈窗,只要一個 alert 就闊以了,代碼如下所示:
#判斷郵件是否是最新
if old_mailid != str(mail_id):
pymsgbox.alert("你有一封新郵件!") # 彈窗提示有新郵件
步驟 4:配置 Window 計劃任務
前面都完成之后,執(zhí)行 python 文件已經可以提示最新郵件了,現在遇到的問題就是如果自動化起來,這里通過配置 Window 計劃任務的方式來實現。首先創(chuàng)建一個新任務,起個名字 autoemail,配置觸發(fā)器,每 1 分鐘執(zhí)行一次,在操作這里,要執(zhí)行的內容是什么呢,顯然 Window 并不能直接執(zhí)行 python,這里創(chuàng)建一個 .bat 文件,在文件中執(zhí)行 Python 文件,在計劃任務這里指定. bat 文件即可
現在自己手動給郵箱發(fā)一封郵件之后,等待 1 分鐘后,就可以看到 pymsgbox 的彈窗提示了,現在就可以去郵箱里面去查收郵件了,或者也可以直接把郵件內容一起顯示出來,這個可以根據需求來修改代碼就可以了。
?
3. 小結
本節(jié)課程我們主要學習了利用 Window 計劃任務實現郵箱監(jiān)控。本節(jié)課程的重點如下:
- 了解定時接收最新郵件的實現思路;
- 掌握利用 Window 計劃任務實現郵箱監(jiān)控定時獲取最新郵件的使用方法。