import poplib
import sys
import smtplib
from email.mime.text import MIMEText
import os
from email.header import decode_header
import email
import time
def check_email():
try:
p = poplib.POP3('pop.163.com')
p.user('*****@163.com')
p.pass_('*******')
ret = p.stat()
except:
print('Login failed!')
sys.exit(1)
str = p.top(ret[0], 0)
strlist = []
for x in str[1]:
try:
strlist.append(x.decode())
except:
try:
strlist.append(x.decode('gbk'))
except:
strlist.append((x.decode('big5')))
mm = email.message_from_string('\n'.join(strlist))
sub = decode_header(mm['subject'])
if sub[0][1]:
submsg = sub[0][0].decode(sub[0][1])
else:
submsg = sub[0][0]
if submsg.strip() == '关机':
return 0
elif submsg.strip() == '重新启动':
return 1
p.quit()
def send_email():
user = '*******@qq.com'
pwd = '**********'
to = ['*****@163.com', '*****@139.com'] #139邮件会有短信提醒,让我知道是否成功
msg = MIMEText('')
msg['Subject'] = '已收到命令!'
msg['From'] = user
msg['To'] = ','.join(to)
s = smtplib.SMTP('smtp.qq.com')
s.login(user, pwd)
s.sendmail(user, to, msg.as_string())
s.close()

if __name__ == '__main__':
while True:
time.sleep(20)
if check_email() == 0:
send_email()
os.system('shutdown -s -t 1') #关机
break
if check_email() == 1:
send_email()
os.system('shutdown -r') #重新启动
break
測试成功


其他命令自行加入,这里仅仅作 关机和重新启动. 脑洞大开!