利用 Window 計(jì)劃任務(wù)實(shí)現(xiàn)郵箱監(jiān)控
想要接收郵件,以往的操作首先要先登錄到郵箱后,查看是否有新的郵件。如果不想時(shí)刻盯著郵箱,又不想錯(cuò)過新的郵件,那么就可以體驗(yàn)下利用 Windows 計(jì)劃任務(wù)實(shí)現(xiàn)郵箱監(jiān)控,當(dāng)有新郵件時(shí),自動(dòng)給出提醒。
1. 整體思路
- 通過 Python zmail 模塊實(shí)現(xiàn)郵件讀取;
- 將最新一封郵件 ID 進(jìn)行保存,第二次執(zhí)行時(shí)比對郵件 ID,判斷是否是新郵件;
- 通過 Python pymsgbox 模塊實(shí)現(xiàn) window 彈窗提示;
- 配置 Window 計(jì)劃任務(wù),每 1 分鐘執(zhí)行一次。
2. 實(shí)現(xiàn)步驟
步驟 1:通過 zmail 實(shí)現(xiàn)最新郵件接收
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 實(shí)現(xiàn)最新一封郵件的接收,這里的代碼同前面小節(jié)中接收郵件代碼一致。
步驟 2:新舊郵件比對
想要提示用戶有最新的郵件,就要把最后一封郵件的信息進(jìn)行記錄,在指定時(shí)間后,拿著兩封郵件的信息進(jìn)行比對,這里我們使用的郵件 ID(注意 ID 并不唯一,如要確保一定的準(zhǔn)確,可以用 ID 結(jié)合郵件標(biāo)題等多方面信息)
記錄郵件信息我們選擇在這里放在了一個(gè) 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:實(shí)現(xiàn) window 彈窗提示
像這種操作早有前人已經(jīng)替我們完成了,這種庫有很多,本小節(jié)采用的是 pymsgbox, 使用前注意通過 pip install pymsgbox 進(jìn)行安裝
先了解下 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='*')
效果依次如下圖所示。
顯然我們這里用不到太復(fù)雜的彈窗,只要一個(gè) alert 就闊以了,代碼如下所示:
#判斷郵件是否是最新
if old_mailid != str(mail_id):
pymsgbox.alert("你有一封新郵件!") # 彈窗提示有新郵件
步驟 4:配置 Window 計(jì)劃任務(wù)
前面都完成之后,執(zhí)行 python 文件已經(jīng)可以提示最新郵件了,現(xiàn)在遇到的問題就是如果自動(dòng)化起來,這里通過配置 Window 計(jì)劃任務(wù)的方式來實(shí)現(xiàn)。首先創(chuàng)建一個(gè)新任務(wù),起個(gè)名字 autoemail,配置觸發(fā)器,每 1 分鐘執(zhí)行一次,在操作這里,要執(zhí)行的內(nèi)容是什么呢,顯然 Window 并不能直接執(zhí)行 python,這里創(chuàng)建一個(gè) .bat 文件,在文件中執(zhí)行 Python 文件,在計(jì)劃任務(wù)這里指定. bat 文件即可
現(xiàn)在自己手動(dòng)給郵箱發(fā)一封郵件之后,等待 1 分鐘后,就可以看到 pymsgbox 的彈窗提示了,現(xiàn)在就可以去郵箱里面去查收郵件了,或者也可以直接把郵件內(nèi)容一起顯示出來,這個(gè)可以根據(jù)需求來修改代碼就可以了。
?
3. 小結(jié)
本節(jié)課程我們主要學(xué)習(xí)了利用 Window 計(jì)劃任務(wù)實(shí)現(xiàn)郵箱監(jiān)控。本節(jié)課程的重點(diǎn)如下:
- 了解定時(shí)接收最新郵件的實(shí)現(xiàn)思路;
- 掌握利用 Window 計(jì)劃任務(wù)實(shí)現(xiàn)郵箱監(jiān)控定時(shí)獲取最新郵件的使用方法。