Python结合Window计划任务监测邮件的示例代码


Posted in Python onAugust 05, 2020

说起自动化绝对算是茶余饭后最有显B格的谈资,毕竟解放双手是从老祖先那里就流传下来的基因,都2020了,你每天上班还要登录各个邮箱账号查收邮件?快来解锁本章内容

整体思路

  • 通过Python zemail库实现邮件读取
  • 将最新一封邮件ID进行保存,第二次执行时比对邮件ID,判断是否是新邮件
  • 通过Python pymsgbox库实现window弹窗提示
  • 配置Window计划任务,每1分钟执行一次

 步骤一:邮件读取

读取邮件通过Python zemail库进行,使用前通过 pip install zemail进行安装,下面来看个邮件读取的例子

import zmail
#获取最新邮件并打印邮件信息
server = zmail.server('xxxxx@qq.com', 'mdgxgiwpnkspbxgx')
mail = server.get_latest()
zmail.show(mail)
print(mail["id"])
print(mail["from"])
print(mail["to"])
print(mail["subject"])
print(mail["context_text"])
print(mail["context_html"])

在配置邮件server时,注意邮箱要开启POP3/SMTP服务,QQ邮箱开启是在:设置->开启POP3/SMTP服务,同时设置授权码,server配置第二个是自动生成的授权码

步骤二:新旧邮件比对

想要提示用户有最新的邮件,就要把最后一封邮件的信息进行记录,在指定时间后,拿着两封邮件的信息进行比对,这里我们使用的邮件ID(注意ID并不唯一,如要确保一定的准确,可以用ID结合邮件标题等多方面信息)

记录邮件信息我这里放在了一个txt文件中,每次先读取再写入

old_mailid = open('id.txt', 'r').readline()
# 写入新邮件ID
with open('id.txt', mode='w+', encoding='utf-8') as f:
  f.write(str(mail_id))

步骤三:实现window弹窗提示

像这种操作早有前人已经替我们完成了,这种库有很多,这里采用的是pymsgbox,使用前注意通过pip install pymsgbox进行安装

先了解下pymsgbox弹窗的多种形式

pymsgbox.alert(text='', title='', button='OK')
pymsgbox.confirm(text='', title='', buttons=['OK', 'Cancel'])
pymsgbox.pompt(text='', title='' , default='')
pymsgbox.password(text='', title='', default='', mask='*')

显然我们这里用不到太复杂的弹窗,只要一个alert就阔以了

#判断邮件是否是最新
if old_mailid != str(mail_id):
  pymsgbox.alert("你有一封新邮件!") # 弹窗提示有新邮件

步骤四:配置Window计划任务

前面都完成之后,执行python文件已经可以提示最新邮件了,现在遇到的问题就是如果自动化起来,总不能自己手动点吧

这里配置Window计划任务,首先创建一个新任务,起个名字autoemail

配置触发器,每1分钟执行一次,在操作这里,要执行的内容是什么呢,显然Window并不能直接执行python,这里创建一个.bat文件,在文件中执行Python文件,在计划任务这里指定.bat文件即可

Python结合Window计划任务监测邮件的示例代码

最后

现在自己手动给邮箱发一封邮件之后,等待1分钟后,就可以看到pymsgbox的弹窗提示了,现在就可以去邮箱里面去查收邮件了,或者也可以直接把邮件内容一起显示出来,随意啦

Python结合Window计划任务监测邮件的示例代码

想要获取完整代码(或其他办公自动化代码)戳这里 :​ https://github.com/yanwydxf/office-automation/tree/master/autoemail

到此这篇关于Python结合Window计划任务监测邮件的示例代码的文章就介绍到这了,更多相关Python Window计划任务监测邮件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中的sort()方法使用基础教程
Jan 08 Python
Python编程实现二分法和牛顿迭代法求平方根代码
Dec 04 Python
Python编程使用*解包和itertools.product()求笛卡尔积的方法
Dec 18 Python
python脚本实现验证码识别
Jun 07 Python
python打开使用的方法
Sep 30 Python
python提取xml里面的链接源码详解
Oct 15 Python
基于Python实现扑克牌面试题
Dec 11 Python
Pytorch 实现冻结指定卷积层的参数
Jan 06 Python
Pycharm+Python工程,引用子模块的实现
Mar 09 Python
python属于解释型语言么
Jun 15 Python
详解anaconda安装步骤
Nov 23 Python
python中round函数保留两位小数的方法
Dec 04 Python
python爬虫使用requests发送post请求示例详解
Aug 05 #Python
8种常用的Python工具
Aug 05 #Python
浅析Python 序列化与反序列化
Aug 05 #Python
Python创建临时文件和文件夹
Aug 05 #Python
学习Python爬虫的几点建议
Aug 05 #Python
Python调用C/C++的方法解析
Aug 05 #Python
浅谈Python3中print函数的换行
Aug 05 #Python
You might like
PHP中可以自动分割查询字符的Parse_str函数使用示例
2014/07/25 PHP
浅析PHP程序设计中的MVC编程思想
2014/07/28 PHP
JavaScript实现滚动栏效果的方法
2015/04/27 PHP
PHP判断FORM表单或URL参数来的数据是否为整数的方法
2016/03/25 PHP
php支持断点续传、分块下载的类
2016/05/02 PHP
php同时使用session和cookie来保存用户登录信息的实现代码
2016/05/13 PHP
PHP生成短网址方法汇总
2016/07/12 PHP
JQuery设置文本框和密码框得到焦点时的样式
2013/08/30 Javascript
javascript实现十六进制颜色值(HEX)和RGB格式相互转换
2014/06/20 Javascript
浅谈jquery中delegate()与live()
2015/06/22 Javascript
JavaScript的面向对象编程基础
2015/08/13 Javascript
jQuery实现的导航下拉菜单效果
2016/07/04 Javascript
javascript中闭包概念与用法深入理解
2016/12/15 Javascript
AngularJS使用ng-app自动加载bootstrap框架问题分析
2017/01/04 Javascript
JS中注入eval, Function等系统函数截获动态代码
2019/04/03 Javascript
微信小程序开发之左右分栏效果的实例代码
2019/05/20 Javascript
elementUI vue this.$confirm 和el-dialog 弹出框 移动 示例demo
2019/07/03 Javascript
Vue修改项目启动端口号方法
2019/11/07 Javascript
Nuxt的动态路由和参数校验操作
2020/11/09 Javascript
python自动化测试之从命令行运行测试用例with verbosity
2014/09/28 Python
利用Python爬取可用的代理IP
2016/08/18 Python
Python实现的HMacMD5加密算法示例
2018/04/03 Python
Python hashlib加密模块常用方法解析
2019/12/18 Python
python实现的分层随机抽样案例
2020/02/25 Python
Python3.7下安装pyqt5的方法步骤(图文)
2020/05/12 Python
python类共享变量操作
2020/09/03 Python
Pyqt助手安装PyQt5帮助文档过程图解
2020/11/20 Python
通过一张图教会你CSS3倒影的实现
2017/09/26 HTML / CSS
重写子类方法时,抛出异常的书写注意事项
2015/10/17 面试题
高一英语教学反思
2014/01/22 职场文书
学校安全管理责任书
2014/07/23 职场文书
民事和解协议书格式
2014/11/29 职场文书
redis不能访问本机真实ip地址的解决方案
2021/07/07 Redis
Redis集群的关闭与重启操作
2021/07/07 Redis
python 安全地删除列表元素的方法
2022/03/16 Python
MySQL数据库 任意ip连接方法
2022/05/20 MySQL