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 相关文章推荐
pytyon 带有重复的全排列
Aug 13 Python
python获取本机外网ip的方法
Apr 15 Python
详解Django中的权限和组以及消息
Jul 23 Python
Python批量修改文本文件内容的方法
Apr 29 Python
Python生成器以及应用实例解析
Feb 08 Python
tensorflow实现对图片的读取的示例代码
Feb 12 Python
matplotlib subplots 调整子图间矩的实例
May 25 Python
Python实现的绘制三维双螺旋线图形功能示例
Jun 23 Python
Python二叉搜索树与双向链表转换算法示例
Mar 02 Python
4行Python代码生成图像验证码(2种)
Apr 07 Python
django rest framework serializers序列化实例
May 13 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
Jul 21 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封装的一个支持HTML、JS、PHP重定向的多功能跳转函数
2014/06/19 PHP
PHP图像处理之imagecreate、imagedestroy函数介绍
2014/11/19 PHP
php生成shtml类用法实例
2014/12/09 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
简单的jquery拖拽排序效果实现代码
2011/09/20 Javascript
滚动图片效果 jquery实现回旋滚动效果
2013/01/08 Javascript
JS根据变量保存方法名并执行方法示例
2014/04/04 Javascript
js定时调用方法成功后并停止调用示例
2014/04/08 Javascript
JS实现鼠标滑过链接改变网页背景颜色的方法
2015/10/20 Javascript
JS实用技巧小结(屏蔽错误、div滚动条设置、背景图片位置等)
2016/06/16 Javascript
JavaScript中子对象访问父对象的方式详解
2016/09/01 Javascript
JS 获取HTML标签内的子节点的方法
2016/09/21 Javascript
vue 过滤器filter实例详解
2018/03/14 Javascript
JavaScript调用模式与this关键字绑定的关系
2018/04/21 Javascript
js中位运算的运用实例分析
2018/12/11 Javascript
vue 组件开发原理与实现方法详解
2019/11/29 Javascript
React中使用UMEditor的方法示例
2019/12/27 Javascript
写一个Vue loading 插件
2020/11/09 Javascript
python实现代码行数统计示例分享
2014/02/10 Python
Python中请使用isinstance()判断变量类型
2014/08/25 Python
简单解析Django框架中的表单验证
2015/07/17 Python
python中学习K-Means和图片压缩
2017/11/20 Python
Python tkinter实现的图片移动碰撞动画效果【附源码下载】
2018/01/04 Python
python smtplib模块自动收发邮件功能(二)
2018/05/22 Python
python设置环境变量的原因和方法
2019/06/24 Python
Python 类属性与实例属性,类对象与实例对象用法分析
2019/09/20 Python
python二进制读写及特殊码同步实现详解
2019/10/11 Python
keras自定义回调函数查看训练的loss和accuracy方式
2020/05/23 Python
探究 canvas 绘图中撤销(undo)功能的实现方式详解
2018/05/17 HTML / CSS
2014年秋季开学寄语
2014/08/02 职场文书
2014年个人工作总结模板
2014/12/15 职场文书
小学四年级作文之写景
2019/08/23 职场文书
python 自动化偷懒的四个实用操作
2021/04/11 Python
小程序实现文字循环滚动动画
2021/06/14 Javascript
详解Java分布式事务的 6 种解决方案
2021/06/26 Java/Android
java实现对Hadoop的操作
2021/07/01 Java/Android