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中的多线程编程
Apr 09 Python
Python文本相似性计算之编辑距离详解
Nov 28 Python
用python3教你任意Html主内容提取功能
Nov 05 Python
对python多线程与global变量详解
Nov 09 Python
pyspark操作MongoDB的方法步骤
Jan 04 Python
selenium+python自动化测试之鼠标和键盘事件
Jan 23 Python
Python2与Python3的区别实例总结
Apr 17 Python
python3使用GUI统计代码量
Sep 18 Python
Python time库基本使用方法分析
Dec 13 Python
通过python连接Linux命令行代码实例
Feb 18 Python
Anaconda和ipython环境适配的实现
Apr 22 Python
Python应用自动化部署工具Fabric原理及使用解析
Nov 30 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
三国漫画《火凤燎原》宣布动画化PV放出 预计2020年播出
2020/03/08 国漫
php的控制语句
2006/10/09 PHP
Yii框架用户登录session丢失问题解决方法
2017/01/07 PHP
Laravel使用PHPQRCODE实现生成带有LOGO的二维码图片功能示例
2017/07/07 PHP
PHP正则表达式函数preg_replace用法实例分析
2020/06/04 PHP
用javascript实现读取txt文档的脚本
2007/07/20 Javascript
让angularjs支持浏览器自动填表
2014/11/10 Javascript
HTML+CSS+JS实现完美兼容各大浏览器的TABLE固定列
2015/04/26 Javascript
JavaScript中的bold()方法使用详解
2015/06/08 Javascript
Node.js的npm包管理器基础使用教程
2016/05/26 Javascript
js与applet相互调用的方法
2016/06/22 Javascript
浅析$(function) ready和onload 的区别
2016/09/03 Javascript
Javascript实现倒计时(防页面刷新)实例
2016/12/13 Javascript
12306 刷票脚本及稳固刷票脚本(防挂)
2017/01/04 Javascript
JS实现根据密码长度显示安全条功能
2017/03/08 Javascript
js实现图片加载淡入淡出效果
2017/04/07 Javascript
seajs下require书写约定实例分析
2018/05/16 Javascript
微信小程序实现左右联动的实战记录
2018/07/05 Javascript
js实现的格式化数字和金额功能简单示例
2019/07/30 Javascript
vue项目实现多语言切换的思路
2020/09/17 Javascript
原生JavaScript实现拖动校验功能
2020/09/29 Javascript
jQuery实现穿梭框效果
2021/01/19 jQuery
[04:39]显微镜下的DOTA2第十三期—Pis卡尔个人秀
2014/04/04 DOTA
[08:54]DOTA2-DPC中国联赛 正赛 Aster vs LBZS 选手采访
2021/03/11 DOTA
pyqt4教程之widget使用示例分享
2014/03/07 Python
Python新手在作用域方面经常容易碰到的问题
2015/04/03 Python
Python去除字符串两端空格的方法
2015/05/21 Python
Python守护进程用法实例分析
2015/06/04 Python
django基础之数据库操作方法(详解)
2017/05/24 Python
Pandas中两个dataframe的交集和差集的示例代码
2020/12/13 Python
为什么如下的代码int a=100,b=100;long int c=a * b;不能工作
2013/11/29 面试题
外企财务年会演讲稿
2014/01/03 职场文书
老干部工作先进集体事迹材料
2014/05/21 职场文书
孝敬父母的活动方案
2014/08/28 职场文书
2014年爱国卫生工作总结
2014/11/22 职场文书
jdbc使用PreparedStatement批量插入数据的方法
2021/04/27 MySQL