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实现socket端口重定向示例
Feb 10 Python
python中pandas.DataFrame排除特定行方法示例
Mar 12 Python
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
Apr 18 Python
Python md5与sha1加密算法用法分析
Jul 14 Python
Python如何发布程序的详细教程
Oct 09 Python
python 批量解压压缩文件的实例代码
Jun 27 Python
python性能测量工具cProfile使用解析
Sep 26 Python
Python使用selenium + headless chrome获取网页内容的方法示例
Oct 16 Python
python脚本和网页有何区别
Jul 02 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
Oct 21 Python
python中Mako库实例用法
Dec 31 Python
深度学习小工程练习之垃圾分类详解
Apr 14 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调用MySQL的存储过程的实现代码
2008/08/12 PHP
PHP网站基础优化方法小结
2008/09/29 PHP
PHP中的print_r 与 var_dump 输出数组
2016/06/13 PHP
php UNIX时间戳用法详解
2017/02/16 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
2019/10/17 PHP
jQuery EasyUI API 中文文档 - MenuButton菜单按钮使用介绍
2011/10/06 Javascript
jQuery的Ajax的自动完成功能控件简要说明
2013/02/22 Javascript
利用毫秒减值计算时长的js代码
2013/09/22 Javascript
Javascript模块化编程详解
2014/12/01 Javascript
javascript实现十秒钟后注册按钮可点击的方法
2015/05/13 Javascript
简介可以自动完成UI的AngularJS工具angular-smarty
2015/06/23 Javascript
jquery validate.js表单验证入门实例(附源码)
2015/11/10 Javascript
基于JavaScript代码实现随机漂浮图片广告
2016/01/05 Javascript
JS onkeypress兼容性写法详解
2016/04/27 Javascript
AngularJs  Creating Services详解及示例代码
2016/09/02 Javascript
jQuery实现键盘回车搜索功能
2017/07/25 jQuery
JS正则表达式常见用法实例详解
2018/06/19 Javascript
iview Upload组件多个文件上传的示例代码
2018/09/30 Javascript
JS基于开关思想实现的数组去重功能【案例】
2019/02/18 Javascript
详解vue的数据劫持以及操作数组的坑
2019/04/18 Javascript
Vue项目使用localStorage+Vuex保存用户登录信息
2019/05/27 Javascript
Vue-router 报错NavigationDuplicated的解决方法
2020/03/31 Javascript
python 实现将字典dict、列表list中的中文正常显示方法
2018/07/06 Python
Python 复平面绘图实例
2019/11/21 Python
python 服务器运行代码报错ModuleNotFoundError的解决办法
2020/09/16 Python
css3高级选择器使用方法
2013/12/02 HTML / CSS
html5配合css3实现带提示文字的输入框(摆脱js)
2013/03/08 HTML / CSS
奥地利网上现代灯具和灯饰店:Lampenwelt.at
2018/01/29 全球购物
IWOOT美国:新奇的小玩意
2018/04/27 全球购物
阿拉伯时尚购物网站:Nisnass
2021/02/07 全球购物
世界上最大的艺术社区:SAA
2020/12/30 全球购物
比较基础的php面试题及答案-编程题
2012/10/14 面试题
高中英语教学反思
2014/02/04 职场文书
历史专业大学生职业生涯规划书
2014/03/13 职场文书
入党积极分子对十八届四中全会期盼的思想汇报
2014/10/17 职场文书
2015年初中教务处工作总结
2015/07/21 职场文书