Python小程式 收發郵件並控制計算機

2021-08-04 21:20:50 字數 2743 閱讀 9540

需求分析:

實現乙個遠端通過網路郵件控制計算機重啟或關機的專案。

程式流程:

過程分析:

要實現本功能,首先要直到在本地如何通過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...