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中signal包的使用
Nov 13 Python
python 调用win32pai 操作cmd的方法
May 28 Python
python保存数据到本地文件的方法
Jun 23 Python
在Python中使用defaultdict初始化字典以及应用方法
Oct 31 Python
Python基础知识点 初识Python.md
May 14 Python
python数组循环处理方法
Aug 26 Python
基于TensorFlow中自定义梯度的2种方式
Feb 04 Python
在PyCharm中实现添加快捷模块
Feb 12 Python
Python面向对象中类(class)的简单理解与用法分析
Feb 21 Python
python如何设置静态变量
Sep 07 Python
python3.8.3安装教程及环境配置的详细教程(64-bit)
Nov 28 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
Laravel 5.5官方推荐的Nginx配置学习教程
2017/10/06 PHP
IE php关于强制下载文件的代码
2008/08/23 Javascript
JavaScript 组件之旅(一)分析和设计
2009/10/28 Javascript
JavaScript高级程序设计 阅读笔记(十四) js继承机制的实现
2012/08/14 Javascript
Javascript异步编程的4种方法让你写出更出色的程序
2013/01/17 Javascript
js同比例缩放图片的小例子
2013/10/30 Javascript
JS对象转换为Jquery对象实现代码
2013/12/29 Javascript
使用javascript控制cookie显示和隐藏背景图
2014/02/12 Javascript
JS判断变量是否为空判断是否null
2014/07/25 Javascript
7个让JavaScript变得更好的注意事项
2015/01/28 Javascript
jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法
2015/03/24 Javascript
Angularjs 实现分页功能及示例代码
2016/09/14 Javascript
Bootstrap table两种分页示例
2016/12/23 Javascript
从零开始做一个pagination分页组件
2017/03/15 Javascript
js实现随机点名小功能
2017/08/17 Javascript
提升页面加载速度的插件InstantClick
2017/09/12 Javascript
Node调用Java的示例代码
2017/09/20 Javascript
一文让你彻底搞清楚javascript中的require、import与export
2017/09/24 Javascript
vue发送ajax请求详解
2018/10/09 Javascript
JavaScript 中 JSON.parse 函数 和 JSON.stringify 函数
2018/12/05 Javascript
微信小程序实现日历效果
2018/12/28 Javascript
vue 解决setTimeOut和setInterval函数无效报错的问题
2020/07/30 Javascript
Vue封装Axios请求和拦截器的步骤
2020/09/16 Javascript
Python简单实现TCP包发送十六进制数据的方法
2016/04/16 Python
Python判断telnet通不通的实例
2019/01/26 Python
浅谈python3 构造函数和析构函数
2020/03/12 Python
在keras中model.fit_generator()和model.fit()的区别说明
2020/06/17 Python
python3 kubernetes api的使用示例
2021/01/12 Python
携程旅行网:中国领先的在线旅行服务公司
2017/02/17 全球购物
Yves Rocher捷克官方网站:植物化妆品的创造者
2019/07/31 全球购物
英国领先的高级美容和在线皮肤诊所:Face the Future
2020/06/17 全球购物
区域销售经理岗位职责
2013/12/10 职场文书
公司外出活动方案
2014/08/14 职场文书
无婚姻登记记录证明
2015/06/18 职场文书
SpringBoot连接MySQL获取数据写后端接口的操作方法
2021/11/02 MySQL
关于CSS自定义属性与前端页面的主题切换问题
2022/03/21 HTML / CSS