1. 程式人生 > 程式設計 >Python結合Window計劃任務監測郵件的示例程式碼

Python結合Window計劃任務監測郵件的示例程式碼

說起自動化絕對算是茶餘飯後最有顯B格的談資,畢竟解放雙手是從老祖先那裡就流傳下來的基因,都2020了,你每天上班還要登入各個郵箱賬號查收郵件?快來解鎖本章內容

整體思路

  • 通過Python zemail庫實現郵件讀取
  • 將最新一封郵件ID進行儲存,第二次執行時比對郵件ID,判斷是否是新郵件
  • 通過Python pymsgbox庫實現window彈窗提示
  • 配置Window計劃任務,每1分鐘執行一次

步驟一:郵件讀取

讀取郵件通過Python zemail庫進行,使用前通過 pip install zemail進行安裝,下面來看個郵件讀取的例子

import zmail
#獲取最新郵件並列印郵件資訊
server = zmail.server('[email protected]','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"])

在配置郵件server時,注意郵箱要開啟POP3/SMTP服務,QQ郵箱開啟是在:設定->開啟POP3/SMTP服務,同時設定授權碼,server配置第二個是自動生成的授權碼

步驟二:新舊郵件比對

想要提示使用者有最新的郵件,就要把最後一封郵件的資訊進行記錄,在指定時間後,拿著兩封郵件的資訊進行比對,這裡我們使用的郵件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))

步驟三:實現window彈窗提示

像這種操作早有前人已經替我們完成了,這種庫有很多,這裡採用的是pymsgbox,使用前注意通過pip install pymsgbox進行安裝

先了解下pymsgbox彈窗的多種形式

pymsgbox.alert(text='',title='',button='OK')
pymsgbox.confirm(text='',buttons=['OK','Cancel'])
pymsgbox.pompt(text='',default='')
pymsgbox.password(text='',default='',mask='*')

顯然我們這裡用不到太複雜的彈窗,只要一個alert就闊以了

#判斷郵件是否是最新
if old_mailid != str(mail_id):
  pymsgbox.alert("你有一封新郵件!") # 彈窗提示有新郵件

步驟四:配置Window計劃任務

前面都完成之後,執行python檔案已經可以提示最新郵件了,現在遇到的問題就是如果自動化起來,總不能自己手動點吧

這裡配置Window計劃任務,首先建立一個新任務,起個名字autoemail

配置觸發器,每1分鐘執行一次,在操作這裡,要執行的內容是什麼呢,顯然Window並不能直接執行python,這裡建立一個.bat檔案,在檔案中執行Python檔案,在計劃任務這裡指定.bat檔案即可

Python結合Window計劃任務監測郵件的示例程式碼

最後

現在自己手動給郵箱發一封郵件之後,等待1分鐘後,就可以看到pymsgbox的彈窗提示了,現在就可以去郵箱裡面去查收郵件了,或者也可以直接把郵件內容一起顯示出來,隨意啦

Python結合Window計劃任務監測郵件的示例程式碼

想要獲取完整程式碼(或其他辦公自動化程式碼)戳這裡:​ https://github.com/yanwydxf/office-automation/tree/master/autoemail

到此這篇關於Python結合Window計劃任務監測郵件的示例程式碼的文章就介紹到這了,更多相關Python Window計劃任務監測郵件內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!