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的框架下的web app的详细教程
Apr 30 Python
编写自定义的Django模板加载器的简单示例
Jul 21 Python
python增加矩阵维度的实例讲解
Apr 04 Python
Python代码缩进和测试模块示例详解
May 07 Python
Python逐行读取文件中内容的简单方法
Feb 26 Python
OpenCV HSV颜色识别及HSV基本颜色分量范围
Mar 22 Python
在pycharm下设置自己的个性模版方法
Jul 15 Python
利用ImageAI库只需几行python代码实现目标检测
Aug 09 Python
详解Python IO编程
Jul 24 Python
如何在scrapy中捕获并处理各种异常
Sep 28 Python
python3实现飞机大战
Nov 29 Python
Python机器学习之基础概述
May 19 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网站提速三大“软”招
2006/10/09 PHP
php adodb连接mssql解决乱码问题
2009/06/12 PHP
PHP中函数rand和mt_rand的区别比较
2012/12/26 PHP
如何让搜索引擎抓取AJAX内容解决方案
2014/08/25 PHP
php简单创建zip压缩文件的方法
2016/04/30 PHP
laravel 操作数据库常用函数的返回值方法
2019/10/11 PHP
通过js脚本复制网页上的一个表格的不错实现方法
2006/12/29 Javascript
wordpress之js库集合研究介绍
2007/08/17 Javascript
jQuery滚动条插件nanoscroller使用指南
2015/04/21 Javascript
javascript处理a标签超链接默认事件的方法
2015/06/29 Javascript
js window对象属性和方法相关资料整理
2015/11/11 Javascript
利用Node.js+Koa框架实现前后端交互的方法
2017/02/27 Javascript
jQuery实现简单的滑动导航代码(移动端)
2017/05/22 jQuery
详解vue组件开发脚手架
2018/06/15 Javascript
JavaScript设计模型Iterator实例解析
2020/01/22 Javascript
vue2.x数组劫持原理的实现
2020/04/19 Javascript
如何在vue中使用百度地图添加自定义覆盖物(水波纹)
2020/11/03 Javascript
[15:23]教你分分钟做大人:虚空假面
2014/10/30 DOTA
python通过装饰器检查函数参数数据类型的方法
2015/03/13 Python
Python3.遍历某文件夹提取特定文件名的实例
2018/04/26 Python
python range()函数取反序遍历sequence的方法
2018/06/25 Python
24式加速你的Python(小结)
2019/06/13 Python
Django Celery异步任务队列的实现
2019/07/24 Python
基于virtualenv创建python虚拟环境过程图解
2020/03/30 Python
pandas按条件筛选数据的实现
2021/02/20 Python
工厂门卫岗位职责
2013/11/25 职场文书
公司清洁工岗位职责
2013/12/14 职场文书
银行学习十八大感想
2014/01/11 职场文书
颁奖典礼主持词
2014/03/25 职场文书
反邪教标语
2014/06/23 职场文书
市场调研项目授权委托书范本
2014/10/04 职场文书
开平碉楼导游词
2015/02/06 职场文书
2015年业务员工作总结范文
2015/04/07 职场文书
golang中切片copy复制和等号复制的区别介绍
2021/04/27 Golang
R9700摩机记
2022/04/05 无线电
基于Android10渲染Surface的创建过程
2022/08/14 Java/Android