首页 > temp > python入门教程 >
-
Python实用工具,email模块,Python实现邮件远程控制自己电脑
前言
最近经常需要简单地远程控制一下电脑,比如远程查看一下电脑上模型训练的情况,模型训练完之后远程关闭电脑等等,于是就想着利用python来简单地实现一下这些功能,直接利用邮件远程控制自己电脑。
让我们愉快地开始吧~
开发工具
Python版本:3.6.4
相关模块:
PIL模块;
email模块;
以及一些Python自带的模块。
环境搭建
安装Python并添加到环境变量,pip安装需要的相关模块即可。
原理简介
一. 思路
电脑每隔一段时间查看指定邮箱中是否收到了新的邮件,若未收到,则不进行任何操作,若收到了,则判断发件人的身份,若发件人为合法的控制者,则解析发件人的邮件,执行解析结果,否则忽略该邮件。
二. 具体实现
(1)收发邮件
我们利用POP3协议来收取邮件,利用SMTP协议来发送邮件,python内置对着两个协议的支持,因此具体实现起来十分简单轻松。
注1:
电脑端邮箱本人使用了新浪邮箱,手机端邮箱本人使用了QQ邮箱。
(2)查看电脑状况
直接利用PIL模块的ImageGrab.grab()函数对电脑进行截屏,然后通过邮件把电脑截屏发送到手机上。
如果想查看模型运行的情况,走之前把模型训练界面显示在桌面上就可以啦~
(3)可扩展性
除了查看电脑状况外,目前仅支持利用cmd命令控制电脑,若需要添加其他功能,可在下图所示的位置上添加:
def run(self):
print('[INFO]:Start server successfully...')
while True:
self.email.reset_pop()
mails = self.email.get('list')['list'][1]
if len(mails) > self.num_msg:
for i in range(self.num_msg+1, len(mails)+1):
res = self.email.get(i)
res_from = res[i]['From']
res_from = re.findall(r'<(.*?)>', res_from)[0].lower()
print(res_from)
if res_from != options['sender']['email'].lower():
continue
command = res[i]['Subject']
if command in word2cmd_dict:
command = word2cmd_dict[command]
if command == 'screenshot':
savename = './screenshot.jpg'
self.screenshot(savename)
try:
is_success = self.email.send(attach_path=savename)
if not is_success:
raise RuntimeError('Fail to send screenshot...')
print('[INFO]: Send screenshot successfully...')
except:
print('[Error]: Fail to send screenshot...')
else:
self.run_cmd(command)
self.num_msg = len(mails)
time.sleep(self.time_interval)
(4)易用性
cmd命令太长手机上打起来不方便或者记不住怎么办?你可以在word2cmd.json中设置快捷命令语:
(5)FAQ
① 电脑端发送邮件失败?
解决方案:
若电脑端发送的邮件被识别为垃圾邮件使得手机端无法查看电脑状况时,可用手机登陆电脑端使用的邮箱,查看被退回的邮件,这样就可以在手机上查看电脑运行状况了。
注3:
若为手机端邮箱拒收,可以设置一下白名单。
② 电脑端无法登陆邮箱?
解决方案:
你需要开启SMTP和POP3服务:
密码应为客户端授权密码,而非登陆密码。当然新浪邮箱的登录密码即为客户端授权密码。
使用演示
Step1:修改配置文件
必须修改的配置文件为:
config.json。
作用:
设置电脑端和手机端邮箱的信息。手机端邮箱的信息用于验证发信人是否为合法控制电脑者,电脑端邮箱的信息用于电脑端接收和发送邮件。
若需要加密SMTP会话,请设置enable_ssl为true,并设置正确的端口号。
选择修改的配置文件为:
word2cmd.json。
作用:
设置快捷命令语。
Step2:运行Server.py文件
发送指令:
执行指令:
结果:
文章到这里就结束了,感谢你的观看,关注我每天分享Python小工具系列,下篇文章分享有趣的小程序
为了感谢读者们,我想把我最近收藏的一些编程干货分享给大家,回馈每一个读者,希望能帮到你们。
出处:https://www.cnblogs.com/daimubai/p/15118240.html