python远程邮件控制电脑升级版


Posted in Python onMay 23, 2019

由于前边Python3.4实现远程控制电脑开关机写的远程操控电脑,使用的POP登陆有使用频率限制,导致非常被动,有时候邮件无法读取,下面改用POST网易邮箱的方法,获取邮件

import urllib.request as request
import http.cookiejar as cookiejar
import urllib.parse
import re
import smtplib
from email.mime.text import MIMEText
import time
import win32com.client
import win32con
import win32api
import os
cj = cookiejar.LWPCookieJar()
cookiesupport = request.HTTPCookieProcessor(cj)
opener = request.build_opener(cookiesupport, request.HTTPHandler)
request.install_opener(opener)
speak = win32com.client.Dispatch('SAPI.SPVOICE')
def Login(username, pwd):
 post_url = 'https://mail.163.com/entry/cgi/ntesdoor?df=mail163_letter&from=web&funcid=loginone&iframe=1&language=-1&passtype=1&product=mail163&net=c&style=-1&race=254_292_276_bj&uid='+ username + "@163.com"
 headers = {
 'Host': 'mail.163.com',
 'Origin': 'http://mail.163.com',
 'Referer': 'http://mail.163.com/',
 'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.39 Safari/537.36'
 }
 post_data = {'savelogin':'0',
 'url2': 'http://mail.163.com/errorpage/error163.htm',
 'username': username,
 'password': pwd
 }
 post_data = urllib.parse.urlencode(post_data).encode('gbk')
 req = request.Request(post_url, post_data, headers=headers)
 page = request.urlopen(req, timeout=20).read().decode('gb2312')
 sid = re.compile(r'sid=(.+?)&df').findall(page)[0]
 return sid
def check_email():
 mail_url = 'http://mail.163.com/js6/s?sid='+Login('******', '******')+'&func=mbox:listMessages&LeftNavRecieveMailClick=1&error=no%20Conext.module&mbox_folder_enter=1'
 mail_data = {
 'var': '<?xml version="1.0"?><object><array name="items"><object><string name="func">mbox:getAllFolders</string><object name="var"><boolean name="stats">true</boolean><boolean name="threads">false</boolean></object></object><object><string name="func">mbox:getFolderStats</string><object name="var"><array name="ids"><string>1,3,18</string></array><boolean name="messages">true</boolean><boolean name="threads">false</boolean></object></object><object><string name="func">mbox:listTags</string><object name="var"><boolean name="stats">true</boolean><boolean name="threads">false</boolean></object></object><object><string name="func">mbox:statMessages</string><object name="var"><array name="fids"><int>1</int><int>2</int><int>3</int><int>4</int><int>18</int><int>5</int></array><object name="filter"><string name="defer">19700101:</string></object></object></object><object><string name="func">mbox:statMessages</string><object name="var"><array name="fids"><int>1</int><int>2</int><int>3</int><int>4</int><int>18</int><int>5</int></array><object name="filter"><string name="defer">:20150617</string></object></object></object></array></object>'
 }
 mail_data = urllib.parse.urlencode(mail_data).encode('utf-8')
 req = request.Request(mail_url, mail_data)
 page = request.urlopen(req, timeout=20).read().decode('utf-8', 'ignore')
 subject = re.compile(r'<string name="subject">(.+?)</string>').findall(page)
 return (subject[len(subject)-1])
def send_email():
 user = '******@163.com'
 pwd = '*******'
 to = ['*****@163.com', '*****@139.com']
 msg = MIMEText('')
 msg['Subject'] = 'OK'
 msg['From'] = user
 msg['To'] = ','.join(to)
 s = smtplib.SMTP('smtp.163.com')
 s.login(user, pwd)
 s.sendmail(user, to, msg.as_string())
 s.close()
if __name__ == '__main__':
 while True:
 try:
  cmd = check_email()
  command1 = {'关机': 'shutdown -s -t 1',
   '重启': 'shutdown -r',
   '关闭浏览器': 'taskkill /F /IM chrome.exe',
   '关闭QQ': 'taskkill /F /IM QQ.exe',
   '关闭qq': 'taskkill /F /IM QQ.exe',
   '关闭wifi': 'taskkill /F /IM kwifi.exe',
   '关闭音乐': 'taskkill /F /IM cloudmusic.exe',
   '打开音乐': 'D:\\网易云音乐\\CloudMusic\\cloudmusic.exe',
   '打开摄像头': 'D:\\Python源码\\摄像头监控.py',
   '打开监控': 'D:\\Python源码\\winSpyon.py',
   '打开QQ': 'D:\\腾讯QQ\\Bin\\QQ.exe',
   '打开qq': 'D:\\腾讯QQ\\Bin\\QQ.exe',
   '打开wifi': 'D:\\Chrome\\kwifi\\kwifi.exe',
   '打开ss': 'D:\\代理服务器\\Shadowsocks-win-dotnet4.0-2.3\\Shadowsocks.exe'
   }
  if cmd in command1.keys():
  speak.Speak('计算机即将' + cmd)
  send_email()
  if cmd.find('打开') == 0:
   win32api.ShellExecute(0, 'open', command1[cmd], '', '', 1)
   if cmd == '打开音乐':
   time.sleep(35)
   win32api.keybd_event(17, 0, 0, 0)
   win32api.keybd_event(18, 0, 0, 0)
   win32api.keybd_event(32, 0, 0, 0)
   win32api.keybd_event(32, 0, win32con.KEYEVENTF_KEYUP, 0)
   win32api.keybd_event(18, 0, win32con.KEYEVENTF_KEYUP, 0)
   win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)
  else:
   os.system(command1[cmd])
  speak.Speak('计算机已经' + cmd + ',任务执行完毕!')
  time.sleep(60)
 except:
  time.sleep(120)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python登录豆瓣并发帖的方法
Jul 08 Python
Python验证企业工商注册码
Oct 25 Python
Python+Django搭建自己的blog网站
Mar 13 Python
windows下python 3.6.4安装配置图文教程
Aug 21 Python
python版DDOS攻击脚本
Jun 12 Python
简单了解python中对象的取反运算符
Jul 01 Python
python elasticsearch从创建索引到写入数据的全过程
Aug 04 Python
numpy np.newaxis 的实用分享
Nov 30 Python
python在不同条件下的输入与输出
Feb 13 Python
如何使用Python处理HDF格式数据及可视化问题
Jun 24 Python
Python字符串查找基本操作代码案例
Oct 27 Python
python 模拟登录B站的示例代码
Dec 15 Python
python操作日志的封装方法(两种方法)
May 23 #Python
Python除法之传统除法、Floor除法及真除法实例详解
May 23 #Python
详解Python3除法之真除法、截断除法和下取整对比
May 23 #Python
python实现远程控制电脑
May 23 #Python
python日志logging模块使用方法分析
May 23 #Python
Django框架模板语言实例小结【变量,标签,过滤器,继承,html转义】
May 23 #Python
Django框架模板文件使用及模板文件加载顺序分析
May 23 #Python
You might like
解析PHP中的内存管理,PHP动态分配和释放内存
2013/06/28 PHP
PHP包含文件函数include、include_once、require、require_once区别总结
2014/04/05 PHP
PHP自动载入类文件函数__autoload的使用方法
2019/03/25 PHP
thinkphp框架使用JWTtoken的方法详解
2019/10/10 PHP
javascript 全角转换实现代码
2009/07/17 Javascript
jquery last-child 列表最后一项的样式
2010/01/22 Javascript
jquery预览图片实现鼠标放上去显示实际大小
2014/01/16 Javascript
jQuery标签替换函数replaceWith()的使用例子
2014/08/28 Javascript
JavaScript实现继承的4种方法总结
2014/10/16 Javascript
js和jquery实现监听键盘事件示例代码
2020/06/24 Javascript
jQuery Html控件基本操作(日常收集整理)
2016/03/11 Javascript
AngularJS基础 ng-mouseleave 指令详解
2016/08/02 Javascript
AngularJS模块详解及示例代码
2016/08/17 Javascript
详解springmvc 接收json对象的两种方式
2016/12/06 Javascript
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
2017/09/18 Javascript
ES6中Array.includes()函数的用法
2017/09/20 Javascript
bootstrap实现二级下拉菜单效果
2017/11/23 Javascript
详解vue静态资源打包中的坑与解决方案
2018/02/05 Javascript
JS一次前端面试经历记录
2020/03/19 Javascript
[04:26]2014DOTA2国际邀请赛-Newbee顺利进入胜者组决赛 独家专访战神7
2014/07/19 DOTA
python开发之字符串string操作方法实例详解
2015/11/12 Python
简单学习Python多进程Multiprocessing
2017/08/29 Python
python3爬虫获取html内容及各属性值的方法
2018/12/17 Python
python程序快速缩进多行代码方法总结
2019/06/23 Python
python中dict使用方法详解
2019/07/17 Python
使用Keras 实现查看model weights .h5 文件的内容
2020/06/09 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
2020/07/20 Python
selenium自动化测试入门实战
2020/12/21 Python
科沃斯机器人官网商城:Ecovacs
2016/08/29 全球购物
SQL Server数据库笔试题和答案
2016/02/04 面试题
中专自我鉴定
2014/02/05 职场文书
婚假请假条怎么写
2014/04/10 职场文书
物业管理委托协议(2篇)
2014/09/23 职场文书
局机关干部群众路线个人对照检查材料思想汇报
2014/10/05 职场文书
大学生社区义工服务心得体会
2016/01/22 职场文书
关于感恩的作文
2019/08/26 职场文书