Python 功能强大,简单易学,很多人不知道如何学习,觉得学习很枯燥。其实趣味学习是最好的方法,比如,你经常忘记关闭办公室的电脑,又不想半路返回单位,就可以用 Python 写一个远程操控的自动关机程序,试想一下,当你掏出手机进行几步简单的操作就可以实现对其他电脑的远程控制,是不是很酷!

要点:

  • 通过邮件的自动接收与发送实现对目标电脑的远程操控

  • 首先在目标电脑上建立一个监听线程用来实时接收邮件

  • 当使用手机对邮箱发送关闭电脑相关主题邮件时

  • 目标电脑就会读取邮件主题文字作为指令并执行

  • 以实现自动关机的目的

一.邮件收发

用于接收和发送邮件的邮箱可任意指定(可以是同一邮箱),不过要想使用邮箱的自动收发功能,还需要生成特定的授权码,一般来说 QQ、163 等邮箱都支持此类操作。以 QQ 邮箱为例,可以在“设置—账户”页面进行设置(下图)

(1)邮件接收

首先要明确用于接收邮件的地址 ADDR、对应的 16 位授权码 PASSWORD 以及接收邮件服务 POP_SERVER

连接到 POP 服务器:

提取当前收件箱中最新的一封邮件,由于邮件数据是经过编码的,这里我们依次尝试 utf8、gbk、big5 三种编码格 式进行解码,并提取邮件标题部分数据。

其中 emailsub 通常包括两个信息,一个是编码后的标题文本数据,另一个 是其编码格式,所以我们还需要再进行一次解码,这时获得的才是真正可用的标题文本数据。

(2)邮件发送

接下来再说一下邮件的自动发送,至于为什么需要设置邮件自动发送功能后面会讲到,这里暂时不提。与邮件接收功能类似,自动发送邮件需要提供用于发送邮件的邮箱地址FROM_ADDR、授权码 PASSWORD、目标 邮件地址 ADDR 以及邮件发送服务 SMTP_SERVER

然后连接 SMTP 服务:

相对邮件接收来说,发送邮件不需要进行编码格式转换,只需要按照特定格式设置邮件内容 msg 并发送即可

二.关机设置

现在开始设计我们的核心功能来实现自动关机,针对自动接收到的邮件标题文本进行关键字识别,由于这里的关键字完全是自己指定的,所以说这部分的自由度非常之高,我们完全可以根据自身的需求和习惯设置任意关键字作为执行指令,比如我在这里设置了两种指令:

  • “延时关机 XX”关键字:触发 shutdown 指令,使目标电脑在XX秒后关机,默认在60 秒后关机。

  • “定时关机 XX:XX”关键字:触发 schtasks 指令,使目标电脑在每天的XX时XX分关机,默认在 00:00 (零点) 关机。

如果接收到有效邮件并执行了关机相关操作则返回 True,否则返回 False。代码如下:

三.实例演示

目前为止几个主要的功能模块都构建完毕了,接下来我们对其进行整合:

1).按照本文开头所讲的设计思路,需要持续监测目标邮箱中的最新邮件,如果发现关机关键字则执行对应的关机指令,考虑到邮件发送的网络延时这里对每次监测之间设置了一个 5 秒的时间间隔。

2).另外,为了避免同一封包含关机指令的邮件被反复读取执行,还需要在关机命令执行后自动发送一封不包含关机指令的新邮件对其进行覆盖,这就是设置邮件自动发送功能的原因,实现代码 如下:

现在我们进行实际操作测试,首先在目标电脑中运行程序,通过手机向目标邮箱发送一个主题名为"延时关机"的邮 件,会发现系统弹出“1分钟内关机”的提示,证明延时关机功能没有问题。

然后测试一下定时关机功能,同样向目标邮箱发送主题名为“定时关机 12:30”的邮件,打开系统的任务计划程序, 会发现多了一个定时关机的计划任务,说明定时关机功能也是成功的。

转载于:https://juejin.im/post/5be04b6e518825171b2d87ac

用Python给对方发个邮箱就可以使对方自动关机,鬼知道你干了什么?相关推荐

  1. python自动批量发邮件脚本_Python实现自动发送邮件功能

    简单邮件传输协议(SMTP)是一种协议,用于在邮件服务器之间发送电子邮件和路由电子邮件.Python提供smtplib模块,该模块定义了一个SMTP客户端会话对象,可用于使用SMTP或ESMTP侦听器 ...

  2. 怎么打包图片_怎么将许多张照片打包发到邮箱?

    怎么将许多张照片打包发到邮箱? 所谓的打包,就是需要你把大量照片文件变成一个压缩文件,类似于放到一个文件夹内,也可以理解为把多张纸质照片装订成一个相册,而在装订过程中需要相应工具才能完成. 使用压缩包 ...

  3. linux云服务器状态上报解决方案:外发个人邮箱

    linux云服务器状态上报解决方案:外发个人邮箱 需求如下: #### 将一些服务器的关键日志实时发送到手机上 一些案例: CPU状态检测 解决方案: #### 利用mailx命令外发邮件 方法如下: ...

  4. python自动登录qq邮箱_selenium+python实现自动登陆QQ邮箱并发送邮件功能

    本期做一个selenium详细实例,会把我在元素定位中遇到的一些阻塞和经验分享给大家. (浏览器为Chrome) (如果只需要最终的完整代码,请直接跳转到文章最后) 浏览器打开QQ邮箱登录网址 fro ...

  5. AWS SES发QQ邮箱拒收解决方案

    文章目录 1 背景 1.1 现象 1.2 环境 1.3 测试 2 分析与解决 2.1 原因分析 2.2 解决 2.2.1 Mail From 2.2.2 使用 DKIM 对电子邮件进行身份验证 2.2 ...

  6. python 自动发微博_用 Python 自动定时发微博

    原标题:用 Python 自动定时发微博 其实小帅b已经挺久没有玩微博了,记得上次玩微博还是为了给周杰伦打榜,不过最近心血来潮,觉得俺的微博账号躺着也是躺着,要不就用 Python 做一个自动定时发微 ...

  7. python实现自动登录qq邮箱,写邮件并发送

    1 编程语言 python 3.5 2 需要安装xlrd库,用来打开Excel文件 3 在命令行中输入 python send.py [接收者邮件地址]   如:python send.py 1234 ...

  8. python基础编程:selenium+python实现自动登陆QQ邮箱并发送邮件功能

    本期做一个selenium详细实例,会把我在元素定位中遇到的一些阻塞和经验分享给大家. (浏览器为Chrome) (如果只需要最终的完整代码,请直接跳转到文章最后) 浏览器打开QQ邮箱登录网址 QQ邮 ...

  9. python自学行吗-上万程序员总结:自学Python,掌握到什么程度就可以找工作了?...

    原标题:上万程序员总结:自学Python,掌握到什么程度就可以找工作了? 前言: Python现在非常火,语法简单而且功能强大,很多同学都想学Python! 在这里把最好的分享给大家!希望能带给大伙儿 ...

最新文章

  1. re.findall()用法详解
  2. 身份证号信息后台匹配
  3. 很有必要看,这篇 解决 IndexError: list index out of range
  4. python 培训-Python培训
  5. 睢县第三届芦笋文化节开幕 对话中国农民丰收节交易会
  6. java 封装 继承 堕胎_Java的继承、封装和多态
  7. CodeVS 1044 拦截导弹(DP)
  8. MySQL存储引擎及InnoDB并发控制介绍
  9. python 制作简单网站_新手小白 做python爬虫 爬什么网站比较简单?
  10. zabbix 客户端自定义端口监控
  11. 图像处理总结:Canny边缘检测(二)
  12. [LeetCode] Construct Binary Tree from Preorder and Inorder Traversal 由先序和中序遍历建立二叉树...
  13. Khronos关于WebGL最新进展
  14. JBoss中间件漏洞总结
  15. 关于 Mac OS系统中编程时出现的segment error 和bus error原因描述
  16. flutter2.x报错解决type (RouteSettings) => Route<dynamic> is not a subtype of type (RouteSettings) => Rou
  17. 可穿戴市场掘金:VC如何看上小小的ZEPP公司
  18. python个性化推荐系统毕业设计_个性化推荐系统架构设计(一)
  19. HDU-4417 Super Mario (主席树)
  20. 上海数据交易中心今天落户静安

热门文章

  1. Android Application的使用及其生命周期
  2. Fetion2008 分析 Part1:准备工作
  3. Mac M1 环境下CV标注工具建设
  4. 使用with语句:记录时间检查路径
  5. Physical Plausible Shading
  6. AJAX核心对象-- XMLHttpRequest 对象使用详解 (一)
  7. Python OpenCV显示图像并保存图像
  8. 问题二十四:怎么模拟ray tracing图形中介质材料的颜色(dielectric)
  9. ETL数据清洗的案例
  10. Hive(一)——基础操作