python初级学习之基于收发邮件的远程控制程序

声明:本篇随笔来源于极客学院Python学习之通过微信控制电脑,但内容不尽相同,实现的思想是面向过程,抛弃了许多东西。(如日志打印等,这里不作分析,有兴趣的读者可以去极客学院找教学视频看看)
python远程控制小程序功能简析:
1:能够打开电脑中的想要打开的文件;如打开一张照片,播放一首音乐,运行qq等。
2:能够调用电脑系统命令关机等。
要用到的知识:
模块:os(系统命令)  
        win32api(打开电脑文件)(需要下载模块pywin32),可用pip直接下载。附api文档链接 http://docs.activestate.com/activepython/2.7/pywin32/win32api.html
        time(使程序等待)  
        re(正则表达式,获取邮件标题与发信人)  
        poplib(提供收取邮件协议Pop3)        
        smtplib(提供发送邮件协议smtp)
核心代码: os.system("command");  win32api.ShellExecute(0,‘open‘,command,‘‘,‘‘,0),remail(host,username,password)(接受邮件函数),send_mail(tolist,sub,content)(发送邮件函数)
 
----------------------------------我是分割线-----------------------------------------------------------------------------------------------
什么是smtp协议?
SMTP 是一种TCP协议支持的提供可靠且有效电子邮件传输的应用层协议。SMTP 是建立在 TCP上的一种邮件服务,主要用于传输系统之间的邮件信息并提供来信有关的通知
 
什么是Pop3协议?
 
POP 协议支持“离线”邮件处理。其具体过程是:邮件发送到服务器上,电子邮件客户端调用邮件客户机程序以连接服务器,并下载所有未阅读的电子邮件。这种离线访问模式是一种存储转发服务,将邮件从邮件服务器端送到个人终端机器上,一般是PC机或 MAC。一旦邮件发送到 PC 机或MAC上,邮件服务器上的邮件将会被删除。但目前的POP3邮件服务器大都可以“只下载邮件,服务器端并不删除”,也就是改进的POP3协议。
 
文字艰涩难懂,有图有真相,smtp协议与Pop3协议运作图(来源于书本,大家将就)
技术分享
 好吧,实在是文笔水平有限!废话就不多说了,上代码
#coding:utf-8
import poplib
import re
import smtplib
import win32api
import time
from email.mime.text import MIMEText
host = ‘pop.sina.com‘         #pop服务器地址
mail_host=‘smtp.sina.com‘  #smtp服务器地址
username = ‘xxxxxx@sina.com‘ #用户名
password = ‘xxxxx‘                    #密码
mail_usr=‘xxxxxx‘                    #用户
mail_postfix=‘sina.com‘           #后缀名
mailto_list=[‘xxxxxxxx@sina.com‘]    #接受列表,这里没有什么用处
#接受邮件函数
def remail(host,username,password):
    pop_conn = poplib.POP3_SSL(host)
    pop_conn.user(username)
    pop_conn.pass_(password)
    ret=pop_conn.list()
    mailbody=pop_conn.retr(len(ret[1]))
    subject=re.search("Subject: (.*?)‘,",str(mailbody[1]).decode(‘utf-8‘),re.S).group(1)
    sender=re.search("X-Sender: (.*?)‘,",str(mailbody[1]).decode(‘utf-8‘),re.S).group(1)
    print sender,subject
    return sender,subject
#发送邮件函数
def send_mail(tolist,sub,content):
    me=‘self‘+‘<‘+mail_usr+‘@‘+mail_postfix+‘>‘
    msg=MIMEText(content,_subtype=‘palin‘,_charset=‘utf-8‘)
    msg[‘Subject‘]=sub
    msg[‘From‘]=me
    msg[‘To‘]=‘;‘.join(tolist)
    try:
        server=smtplib.SMTP()
        server.connect(mail_host)
        server.login(mail_usr,password)
        server.sendmail(me,tolist,msg.as_string())
        server.close()
        return True
    except Exception,e:
        print str(e)
        return False
#执行命令
def execute(command):
    win32api.ShellExecute(0,‘open‘,command,‘‘,‘‘,1)
#运行
def run(host,username,password):
    while True:
        sender,subjcet=remail(host,username,password) #获取第一个邮件,获取发送人信息,邮件主题
        if sender==‘xxxxx@qq.com‘:  #仅仅是特定邮箱发送过来的方才会执行命令
            execute(subjcet)
            send_mail(mailto_list,‘stop‘,‘‘) #自己发送给自己,防止再次执行命令
        if sender==‘xxxxxxx@sina.com‘:
            break
        time.sleep(5)
run(host,username,password)
注意:如果要实现运行成功上面的小程序就必须开通smtp/pop3协议,可以在邮箱设置中打开。目前,亲测能用的就是是新浪邮箱了,其他邮箱如qq邮箱,网易邮箱等由于非自身的客户端登陆需要客户端授权码(不知道是什么的可自行百度,这里不作解释),比较麻烦,所以没有尝试。有兴趣的同学,可尝试一下,如果成功了还望告知一声,万分感激。。
   总结:
          无声无息地把它运行在舍友的电脑上,当他玩游戏玩得正入迷时,突然电脑弹出个贞子的照片,脑补那画面也是醉了。。
         通过这个小程序,我了解了邮件的接收协议,以及一些我从来不知道的api,让我更加有兴趣去探索python的世界。
        人生苦短,我用python。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值