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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值