用Python发送邮件给室友使其电脑关机,室友一脸茫然以为电脑中毒
Python 功能強大,簡單易學,很多人不知道如何學習,覺得學習很枯燥。其實趣味學習是最好的方法,比如,你經常忘記關閉辦公室的電腦,又不想半路返回單位,就可以用 Python 寫一個遠程操控的自動關機程序,試想一下,當你掏出手機進行幾步簡單的操作就可以實現對其他電腦的遠程控制,是不是很酷!
?
要點:
通過郵件的自動接收與發送實現對目標電腦的遠程操控
首先在目標電腦上建立一個監聽線程用來實時接收郵件
當使用手機對郵箱發送關閉電腦相關主題郵件時
目標電腦就會讀取郵件主題文字作為指令并執行
以實現自動關機的目的
一.郵件收發
用于接收和發送郵件的郵箱可任意指定(可以是同一郵箱),不過要想使用郵箱的自動收發功能,還需要生成特定的授權碼,一般來說 QQ、163 等郵箱都支持此類操作。以 QQ 郵箱為例,可以在“設置—賬戶”頁面進行設置(下圖),學習資料也可以加下Python扣扣裙:3零4零5零799自己下載學習下。
(1)郵件接收
首先要明確用于接收郵件的地址 ADDR、對應的 16 位授權碼 PASSWORD 以及接收郵件服務 POP_SERVER
連接到 POP 服務器:
提取當前收件箱中最新的一封郵件,由于郵件數據是經過編碼的,這里我們依次嘗試 utf8、gbk、big5 三種編碼格 式進行解碼,并提取郵件標題部分數據。
其中 emailsub 通常包括兩個信息,一個是編碼后的標題文本數據,另一個 是其編碼格式,所以我們還需要再進行一次解碼,這時獲得的才是真正可用的標題文本數據。
(2)郵件發送
接下來再說一下郵件的自動發送,至于為什么需要設置郵件自動發送功能后面會講到,這里暫時不提。與郵件接收功能類似,自動發送郵件需要提供用于發送郵件的郵箱地址FROM_ADDR、授權碼 PASSWORD、目標 郵件地址 ADDR 以及郵件發送服務 SMTP_SERVER
然后連接 SMTP 服務:
相對郵件接收來說,發送郵件不需要進行編碼格式轉換,只需要按照特定格式設置郵件內容 msg 并發送即可
二.關機設置
現在開始設計我們的核心功能來實現自動關機,針對自動接收到的郵件標題文本進行關鍵字識別,由于這里的關鍵字完全是自己指定的,所以說這部分的自由度非常之高,我們完全可以根據自身的需求和習慣設置任意關鍵字作為執行指令,比如我在這里設置了兩種指令:
“延時關機 XX”關鍵字:觸發 shutdown 指令,使目標電腦在XX秒后關機,默認在60 秒后關機。
“定時關機 XX:XX”關鍵字:觸發 schtasks 指令,使目標電腦在每天的XX時XX分關機,默認在 00:00 (零點) 關機。
如果接收到有效郵件并執行了關機相關操作則返回 True,否則返回 False。代碼如下:
三.實例演示
目前為止幾個主要的功能模塊都構建完畢了,接下來我們對其進行整合:
1).按照本文開頭所講的設計思路,需要持續監測目標郵箱中的最新郵件,如果發現關機關鍵字則執行對應的關機指令,考慮到郵件發送的網絡延時這里對每次監測之間設置了一個 5 秒的時間間隔。
2).另外,為了避免同一封包含關機指令的郵件被反復讀取執行,還需要在關機命令執行后自動發送一封不包含關機指令的新郵件對其進行覆蓋,這就是設置郵件自動發送功能的原因,實現代碼 如下:
現在我們進行實際操作測試,首先在目標電腦中運行程序,通過手機向目標郵箱發送一個主題名為"延時關機"的郵 件,會發現系統彈出“1分鐘內關機”的提示,證明延時關機功能沒有問題。
然后測試一下定時關機功能,同樣向目標郵箱發送主題名為“定時關機 12:30”的郵件,打開系統的任務計劃程序, 會發現多了一個定時關機的計劃任務,說明定時關機功能也是成功的。
總結
以上是生活随笔為你收集整理的用Python发送邮件给室友使其电脑关机,室友一脸茫然以为电脑中毒的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 聊聊 CSS 中的布局模式
- 下一篇: 一个排课软件的设计