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人人网登录应用实例
Sep 26 Python
python中迭代器(iterator)用法实例分析
Apr 29 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
Mar 29 Python
python使用正则表达式来获取文件名的前缀方法
Oct 21 Python
在Python中获取两数相除的商和余数方法
Nov 10 Python
python3人脸识别的两种方法
Apr 25 Python
Python 实现还原已撤回的微信消息
Jun 18 Python
python连接mongodb集群方法详解
Feb 13 Python
Pycharm生成可执行文件.exe的实现方法
Jun 02 Python
ITK 实现多张图像转成单个nii.gz或mha文件案例
Jul 01 Python
Python matplotlib读取excel数据并用for循环画多个子图subplot操作
Jul 14 Python
python绘制高斯曲线
Feb 19 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
AM/FM收音机的安装与调试
2021/03/02 无线电
德生PL550的电路分析
2021/03/02 无线电
桌面中心(一)创建数据库
2006/10/09 PHP
单一index.php实现PHP任意层级文件夹遍历(Zjmainstay原创)
2012/07/31 PHP
PHP中数组定义的几种方法
2013/09/01 PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
2014/02/02 PHP
PHP+MySQL之Insert Into数据插入用法分析
2015/09/27 PHP
在WordPress中使用wp_count_posts函数来统计文章数量
2016/01/05 PHP
thinkphp5.0整合phpsocketio完整攻略(绕坑)
2018/10/12 PHP
PHP7匿名类的用法示例
2019/04/05 PHP
自定义一个jquery插件[鼠标悬浮时候 出现说明label]
2011/06/27 Javascript
取消选中单选框radio的三种方式示例介绍
2013/12/23 Javascript
JQuery中DOM事件绑定用法详解
2015/06/13 Javascript
jquery解析json格式数据的方法(对象、字符串)
2015/11/24 Javascript
jquery操作checkbox火狐下第二次无法勾选的解决方法
2016/10/10 Javascript
vue-router中的hash和history两种模式的区别
2018/07/17 Javascript
Vue组件创建和传值的方法
2018/08/17 Javascript
使用vscode快速建立vue模板过程详解
2019/10/10 Javascript
Python中处理字符串之islower()方法的使用简介
2015/05/19 Python
python 3.7.0 下pillow安装方法
2018/08/27 Python
python得到单词模式的示例
2018/10/15 Python
python 搭建简单的http server,可直接post文件的实例
2019/01/03 Python
python使用pip安装SciPy、SymPy、matplotlib教程
2019/11/20 Python
Python实现中值滤波去噪方式
2019/12/18 Python
Pycharm中配置远程Docker运行环境的教程图解
2020/06/11 Python
美国最大的无人机经销商:DroneNerds
2018/03/20 全球购物
组织关系转移介绍信
2014/01/16 职场文书
工商管理专业毕业生求职信
2014/05/26 职场文书
大四毕业生自荐书
2014/07/05 职场文书
教师自我剖析材料(群众路线)
2014/09/29 职场文书
小学少先队工作总结2015
2015/05/26 职场文书
2015年校本培训工作总结
2015/07/24 职场文书
500字作文之关于爸爸
2019/11/14 职场文书
Python OpenCV快速入门教程
2021/04/17 Python
Mysql存储过程、触发器、事件调度器使用入门指南
2022/01/22 MySQL
Mybatis-Plus进阶分页与乐观锁插件及通用枚举和多数据源详解
2022/03/21 Java/Android