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之Python文档
Oct 10 Python
详解Python中的日志模块logging
Jun 19 Python
Python 用Redis简单实现分布式爬虫的方法
Nov 23 Python
django admin添加数据自动记录user到表中的实现方法
Jan 05 Python
谈谈Python中的while循环语句
Mar 10 Python
python自动化测试之DDT数据驱动的实现代码
Jul 23 Python
pytorch 在sequential中使用view来reshape的例子
Aug 20 Python
numpy np.newaxis 的实用分享
Nov 30 Python
ansible动态Inventory主机清单配置遇到的坑
Jan 19 Python
python数据预处理 :数据共线性处理详解
Feb 24 Python
Python接口测试get请求过程详解
Feb 28 Python
常用的10个Python实用小技巧
Aug 10 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
解析mysql中UNIX_TIMESTAMP()函数与php中time()函数的区别
2013/06/24 PHP
淘宝ip地址查询类分享(利用淘宝ip库)
2014/01/07 PHP
php从完整文件路径中分离文件目录和文件名的方法
2015/03/13 PHP
PHP数组和explode函数示例总结
2015/05/08 PHP
PHP常用的三种设计模式汇总
2016/08/28 PHP
php str_getcsv把字符串解析为数组的实现方法
2017/04/05 PHP
js 表格隔行颜色
2009/12/02 Javascript
js实现的日期操作类DateTime函数代码
2010/03/16 Javascript
js实现网站首页图片滚动显示
2013/02/04 Javascript
js传中文参数controller里获取参数乱码问题解决方法
2014/01/03 Javascript
jquery中使用循环下拉菜单示例代码
2014/09/24 Javascript
JS中三目运算符和if else的区别分析与示例
2014/11/21 Javascript
基于js实现微信发送好友如何分享到朋友圈、微博
2015/11/30 Javascript
基于Jquery插件实现跨域异步上传文件功能
2016/04/26 Javascript
Bootstrap编写一个同时适用于PC、平板、手机的登陆页面
2016/06/30 Javascript
Vue2.0用户权限控制解决方案的示例
2018/02/10 Javascript
原生javascript AJAX 三级联动的实现代码
2018/05/04 Javascript
使用Typescript和ES模块发布Node模块的方法
2020/05/25 Javascript
[05:41]2014DOTA2西雅图国际邀请赛 小组赛7月10日TOPPLAY
2014/07/10 DOTA
[51:05]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第一局
2016/03/06 DOTA
python抓取网页内容示例分享
2014/02/24 Python
使用Python读写文本文件及编写简单的文本编辑器
2016/03/11 Python
Python学习笔记之if语句的使用示例
2017/10/23 Python
使用Python给头像加上圣诞帽或圣诞老人小图标附源码
2019/12/25 Python
Python通过4种方式实现进程数据通信
2020/03/12 Python
PYQT5 vscode联合操作qtdesigner的方法
2020/03/24 Python
澳大利亚现代波西米亚风格女装网站:Bohemian Traders
2018/04/16 全球购物
中学教师管理制度
2014/01/14 职场文书
安全生产活动月方案
2014/03/09 职场文书
4S店售后客服自我评价
2014/04/09 职场文书
社会调查研究计划书
2014/05/01 职场文书
社区服务标语
2014/07/01 职场文书
PHP解决高并发问题
2021/04/01 PHP
我对PyTorch dataloader里的shuffle=True的理解
2021/05/20 Python
用Python进行栅格数据的分区统计和批量提取
2021/05/27 Python
win10频率超出范围怎么办?win10老显示超出工作频率范围的解决方法
2022/07/07 数码科技