写在前面
本篇博客实现的功能是基于python来完成的自动收发邮件从而实现手机远程控制电脑的功能。
这里我参考了【向日葵控制软件】的控制功能,并结合了python与pOp3协议从而根据自己设置的关键字来判断手机端发送过来的邮件信息,从而完成对PC端的远程控制。
代码剖析
首先引入本程序用到的库
代码语言:javascript复制import os
import time
import poplib
import email
from email.header import decode_header
创建用户交互,让其输入自己的邮箱账号和密码
代码语言:javascript复制name = input('请输入你的163网易邮箱用户名(或手机号):')# 读取Email,获取Email主题
password = input('请输入你的163网易客户端授权密码:')
创建函数
代码语言:javascript复制def getEmailSubject():
调用poplib库使用POP3协议
代码语言:javascript复制read = poplib.POP3('pop.163.com')
读取用户名和密码
代码语言:javascript复制read.user(name)# 163邮箱用户名
read.pass_(password) # 163邮箱设置中的客户端授权密码
读取邮件信息
代码语言:javascript复制allEmails = read.stat() # 读取邮件信息
自动获取最新一条信息数据
代码语言:javascript复制topEmail = read.top(allEmails[0], 0) # 获取最新的一封邮件
创建数组,并解码邮件数据存入数组中
代码语言:javascript复制tmp = []
# 解码邮件,存入tmp
for s in topEmail[1]:
try:
tmp.append(s.decode())
except:
try:
tmp.append(s.decode('gbk'))
except:
tmp.append(s.decode('big5'))
message = email.message_from_string('n'.join(tmp))
获取邮件主题
代码语言:javascript复制subject = decode_header(message['Subject'])
if subject[0][1]:
subjectDecode = subject[0][0].decode(subject[0][1])
else:
subjectDecode = subject[0][0]
return subjectDecode
创建函数def checkEmailSubject(),并检测邮件的主题
代码语言:javascript复制 while True:
subject = getEmailSubject()
print('代码运行中........')
print('代码正在运行中,请勿关闭!' subject)
设置判断条件
代码语言:javascript复制 if subject == '重启':
os.system('shutdown -r -t 3')
break
if subject == '关机':
os.system('shutdown -s -t 3')
break
设置检测时间
代码语言:javascript复制time.sleep(60) #每1分钟自动检测一次
最后执行
代码语言:javascript复制if __name__ == '__main__':
checkEmailSubject()
全部代码提供
代码语言:javascript复制import os
import time
import poplib
import email
from email.header import decode_header
name = input('请输入你的163网易邮箱用户名(或手机号):')# 读取Email,获取Email主题
password = input('请输入你的163网易客户端授权密码:')
def getEmailSubject():
read = poplib.POP3('pop.163.com')
read.user(name)# 163邮箱用户名
read.pass_(password) # 163邮箱设置中的客户端授权密码
allEmails = read.stat() # 读取邮件信息
topEmail = read.top(allEmails[0], 0) # 获取最新的一封邮件
tmp = []
# 解码邮件,存入tmp
for s in topEmail[1]:
try:
tmp.append(s.decode())
except:
try:
tmp.append(s.decode('gbk'))
except:
tmp.append(s.decode('big5'))
message = email.message_from_string('n'.join(tmp))
# 获取邮件主题
subject = decode_header(message['Subject'])
if subject[0][1]:
subjectDecode = subject[0][0].decode(subject[0][1])
else:
subjectDecode = subject[0][0]
return subjectDecode
def checkEmailSubject():# 检查Email的主题
while True:
subject = getEmailSubject()
print('代码运行中........')
print('代码正在运行中,请勿关闭!' subject)
if subject == '重启':
os.system('shutdown -r -t 3')
break
if subject == '关机':
os.system('shutdown -s -t 3')
break
time.sleep(60) #每1分钟自动检测一次
if __name__ == '__main__':
checkEmailSubject()