需求分析:
實現乙個遠端通過網路郵件控制計算機重啟或關機的專案。
程式流程:
過程分析:
要實現本功能,首先要直到在本地如何通過python控制計算機的重啟和關機,然後需要知道如何遠端傳送訊息給python程式。可以在python中執行cmd命令控制計算機的重啟和關機,把傳送電子郵件作為遠端控制的渠道。python程式自動登入郵箱檢測郵件,當傳送關機指令給這個郵箱時,則執行關機命令。
1.通過os.system()函式執行cmd命令
import os
os.system('shutdown /s /t 1')
2.smtp是一組用於由源位址到目的位址傳送郵件的規則,可以控制信件的中轉方式。smtp屬於tcp/ip協議簇,通過smtp指定的伺服器,可以把e-mail寄到收信人的伺服器上。
import smtplib
s=smtplib.smtp('smtp.163.com')
msg=s.ehlo()
code=msg[0]
print(msg)
print("smtp code is%d" %(code))
在傳送e-mail時,客戶應該以ehlo命令開始smtp會話。如果命令成功,則伺服器返回**250。
3.pop用於使用客戶端遠端管理在伺服器上的電子郵件。最流行的是pop3,屬於tcp/ip協議簇,用於接收e-mail。
from poplib import pop3
s=poplib.pop3(pop3.163.com)
s.user(username)
s.pass_(password)
ret=s.stat()
具體實現:
控制端電腦程式:
import email
import smtplib
import time
import os,sys
import random
def send_mail():
try:
s=smtplib.smtp('smtp.163.com')#連線伺服器
s.login('fromusername','password')#登入傳送發賬號
msg="to:[email protected]\r\nfrom:[email protected]\r\nsubject:shutdown \r\n\r\nshutdown\r\n"#設定郵件內容
s.sendmail('[email protected]','[email protected]',msg)#傳送郵件
s.close()
return 1
except (smtplib.smtpexception) as e:
print e
return 0
if __name__=='__main__':
while send_mail()==0:#如果傳送失敗,10s後再發一次
time.sleep(10)
被控制端電腦程式:
#-*- encoding:utf-8 -*-
import os,sys,string
import poplib
import os
import time
#pop3伺服器位址
host="pop3.163.com"
#使用者名稱
username="***********@163.com"
#密碼password="******"
#取第一封郵件完整資訊,在返回值裡,按行儲存在down[1]的列表裡,down[0]是返回的狀態資訊
while true:
#建立乙個pop3物件,這個時候實際上已經連線到伺服器
p=poplib.pop3(host)
#向伺服器傳送使用者名稱
p.user(username)
#向伺服器傳送密碼
p.pass_(password)
#列出郵件資訊,num為郵件數量,total_size為郵件總的大小
num,total_size=p.stat()
down=p.retr(num)#獲取最新郵件到元組down
#元組down的第2個元素為郵件內容
mails=down[1]
print mails
for line in mails:#遍歷郵件內容的每一行
if line.find('subject')==0:#找到標題行
print line
if line.find('shutdown')>0:#如果標題為shutdown
p.dele(num)#刪除該郵件,以防下次遍歷時造成重複關機
p.quit()#關機前退出郵箱
print 'shutdown...'
os.system(' shutdown /s /t 10')#關機
p.quit()#每次輪詢最後都退出郵箱
time.sleep(5)#每次輪詢都休眠5s
python 發郵件 python發郵件
python提供smtplib模組,該模組定義了乙個smtp客戶端會話物件,可用於使用smtp或esmtp偵聽器守護程式向任何網際網路機器傳送郵件。這是乙個簡單的語法,用來建立乙個smtp物件,稍後將演示如何用它來傳送電子郵件 import smtplib smtpobj smtplib.smtp ...
利用jmail元件收發郵件
a 收郵件步驟 二 以管理員的身份註冊jmail.dll元件,即執行命令 regsvr32 jmail.dll 三 建立控制台應用程式,原始碼為 將jmail.dll直接拷貝到工程中可用 import jmail.dll 或者使用絕對路徑,如下 import e src jmail.dll void...
在命令列下收發郵件
今天,看到網上介紹說用命令列下來收發郵件,因此具體寫一下過程.收郵件 開啟 開始 選單中的 執行 對話方塊,輸入命令telnet 及遠端伺服器端口號,如 telnet pop3.163.com 110就會與 網易163免費郵 的pop3伺服器pop3.163.com建立連線。如果上述連線成功,pop...