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 相关文章推荐
详解Python3.1版本带来的核心变化
Apr 07 Python
Python 编码处理-str与Unicode的区别
Sep 06 Python
python opencv检测目标颜色的实例讲解
Apr 02 Python
详解Python3 pandas.merge用法
Sep 05 Python
命令行运行Python脚本时传入参数的三种方式详解
Oct 11 Python
在Pytorch中计算卷积方法的区别详解(conv2d的区别)
Jan 03 Python
Python 剪绳子的多种思路实现(动态规划和贪心)
Feb 24 Python
Python求凸包及多边形面积教程
Apr 12 Python
parser.add_argument中的action使用
Apr 20 Python
python与pycharm有何区别
Jul 01 Python
Python request post上传文件常见要点
Nov 20 Python
宝塔更新Python及Flask项目的部署
Apr 11 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 多进程 解决难题
2009/06/22 PHP
php命令行用法入门实例教程
2014/10/27 PHP
php析构函数的简单使用说明
2015/08/24 PHP
PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例
2020/01/23 PHP
Laravel如何实现适合Api的异常处理响应格式
2020/06/14 PHP
javascript中的对象和数组的应用技巧
2007/01/07 Javascript
JavaScript判断浏览器类型的方法
2015/02/10 Javascript
深入分析下javascript中的[]()+!
2015/07/07 Javascript
详解JavaScript对象和数组
2015/12/03 Javascript
vuejs2.0实现分页组件使用$emit进行事件监听数据传递的方法
2017/02/22 Javascript
ES6字符串模板,剩余参数,默认参数功能与用法示例
2017/04/06 Javascript
在 vue-cli v3.0 中使用 SCSS/SASS的方法
2018/06/14 Javascript
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
2018/10/23 Javascript
vue element-ui之怎么封装一个自己的组件的详解
2019/05/20 Javascript
JS数组Reduce方法功能与用法实例详解
2020/04/29 Javascript
JavaScript代码简化技巧实例解析
2020/09/09 Javascript
[44:04]OG vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
使用Python发送邮件附件以定时备份MySQL的教程
2015/04/25 Python
python实现AES加密与解密
2019/03/28 Python
python框架django项目部署相关知识详解
2019/11/04 Python
Microsoft新加坡官方网站:购买微软最新软件和技术产品
2016/10/28 全球购物
德国机场停车位比较和预订网站:Ich-parke-billiger
2018/01/08 全球购物
英国Flybe航空官网:欧洲最大的独立支线廉价航空公司
2019/07/15 全球购物
马来西亚网上花店:FlowerAdvisor马来西亚
2020/01/03 全球购物
天逸系统(武汉)有限公司Java笔试题
2015/12/29 面试题
几个SQL的面试题
2014/03/08 面试题
小学生寒假家长评语
2014/04/16 职场文书
个人工作主要事迹
2014/05/08 职场文书
考试作弊被抓检讨书
2014/10/02 职场文书
农村党员学习党的群众路线教育实践活动心得体会
2014/11/04 职场文书
特岗教师个人总结
2015/02/10 职场文书
2015年教师见习期工作总结
2015/05/20 职场文书
家长必看:义务教育,不得以面试 评测等名义选拔学生
2019/07/09 职场文书
MySQL中的引号和反引号的区别与用法详解
2021/10/24 MySQL
golang使用map实现去除重复数组
2022/04/14 Golang
详解MongoDB排序时内存大小限制与创建索引的注意事项
2022/05/06 MongoDB