Python 远程(邮件)控制电脑升级版

由于前边http://blog.csdn.net/u013511642/article/details/44259557写的远程操控电脑,使用的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)

转载请注明作者与出处:http://blog.csdn.net/u013511642  王小涛_同學

时间: 2024-08-11 09:57:19

Python 远程(邮件)控制电脑升级版的相关文章

Mstsc 微软远程桌面控制工具

Mstsc 全称为Microsoft Telnet Screen Control ,它是微软远程桌面控制工具,能够轻松实现远程连接其它电脑. 前提: 1.畅通的网络 2. 两台已经开机的电脑 用法: 1.点击开始-->运行-->mstsc   2.输入计算机的IP地址或计算机名称.(如果对方的电脑是外网的,使用外网IP地址 )      3.输入用户名和密码,确认,就可以远程连接成功了.(这里必须要有对方电脑有远程桌面权限的用户才能登录该电脑.)          参考: http://jin

Andy - 又一款速度流畅的免费安卓 Android 模拟器 (支持手机无线控制电脑模拟器)

随着 Genymotion.BlueStacks 等电脑上的 Android 模拟器流行起来之后,似乎很多人都发现在电脑上运行使用安卓APP软件.畅玩手机游戏确实很有乐趣. 今天我们又发现了一款全新免费的 Android 模拟器——Andy!官方表示 Andy 将支持 Windows.Mac 以及 Linux (目前仅发布了Win版).模拟器的使用效果基本上和前两者一样,都可以比较流畅地在电脑上运行安卓应用程序.而 Andy 有特色的地方是提供了远程控制功能,可以在 Android 手机/平板上

远程桌面控制演示

远程桌面控制演示这里我先打开两台虚拟机,分别是windows虚拟机和linux虚拟机,如何安装这里不再演示.前面文章已经演示过.如下图所示: 我们先对linux虚拟机进行设置,将光盘先开启 接着将里面的已连接勾上,并将挂载的映像文件放进去,进入下一步 将已连接和映像文件选好后,点击确定,进入界面,这时可看见光盘已开启 在挂载之前我们可以先看看我们的cdrom(光驱)在哪个目录里,所以这里我们可以切换到dev(硬件设备)里面进行看. 在linux系统中,设备只有挂载起来才能使用,这里我们找个空目录

Python 远程开机

用 Python 关机你肯定听过或者实践过,那么用 Python 开机呢?这是一个神奇的方法,教你如何用 Python 来开机. 本文目标 远程开机原理 Python 远程开机代码实现 Python 关机说明 Python 开机 关于用程序来开机,是怎么做到的呢?这就是 WOL 技术 Wake-On-Lan, 利用计算机在关机或休眠状态时,网卡及主板部分仍然有微弱的供电,当然要保持电源是插上的,而且是有线连接.所以即使在关机情况下,网卡还是有一定运作能力的,可以监听计算机外部的网上广播信息,当发

配个小黑盒,手机也能控制电脑来办公

供职于一家广告策划公司的我,日常会在路上接收到甲方突如其来的修改意见.你说要是改个普通的Word文档那还算简单.但,很多时候并没有这么简单.很多时候,往往是PPT的配图.Word的排版.甚至还方案里面杂七杂八的数据矫正等等一起都要修改.都不是手机能够简单搞定的. 甲方往往也不会管你现在是六点还是八点,不管你是在公交车上还是地铁里,一个电话.一条信息,你就得马上改并且反馈新的方案版本. --大哥!我可是在路上啊!你让我怎么改啊? 接下来的要介绍的小黑盒子就可以为各位从事策划的同行们解决这个烦恼.

如何使用windows远程桌面控制树莓派3B

文章开头先来吐槽一下网上的免费教程.虽然现在是信息时代,我们可以在网上学习各种各样的知识.但是网上的教程鱼龙混杂,缺少时间有效性.甚至有些纯粹是误导,只看到结果,根本不披露实现过程.这一点要鄙视一下.       在实际操作过程中,你会遇到很多问题,这些问题对于还是小白的你来说,如果百度查不到,那就会打击你对树莓派的信心,加速树莓派吃灰的进程.所以,我会不定期的更新树莓派3b 的教程,教你一步一步的玩转树莓派!每一篇文章我都会注明更新日期,方便大家查阅.好,闲言少叙,开始今天的正题:树莓派3B(

三、python的流程控制

三.python的流程控制 1.顺序结构 python和shell,java等语言都有一定的执行顺序即顺序结构. python语言在解释器中的执行顺序是:从上到下依次执行,从左到右执行,所以函数或者变量必须先声明后调用. 2.分支选择结构 在python中只有if选择结构,没有java里的switch...case..结构和shell里的case ...;;;....esac结构,并且与java中的用法规则相似,但是语法格式不一样. 当表达式的结果是数据类型里面的布尔型中的true时,执行if后

python发邮件

import smtplib from email.mime.text import MIMEText from email.header import Header # 第三方 SMTP 服务 mail_host="smtp.qq.com" #设置服务器 mail_user="xxxxxx" #用户名 mail_pass="plcfthkdtpoxcabh" #口令QQ需要授权码 sender = '[email protected]' rec

Python 远程调用脚本之 RPC

最近有个监控需求,需要远程执行集群每个节点上的脚本,并获取脚本执行结果,为了安全起见不需要账号密码登陆主机,要求只需要调用远程脚本模块的方法就能实现. 总结下python进行远程调用脚本方法: 登陆主机执行脚本,python模块支持如 pssh.pexpect.paramiko 以远程方法调用(不需要登陆主机),python模块 rpyc,支持分布式 socket 方式,稍显复杂,需要熟悉网络协议,起点比较高 rpyc支持远程调用.分布式计算,以较少代码量实现需复杂socket编程,本文主要介绍