为什么要自动处理邮件
休假的时候,看到手机邮箱图标右上角不断变大的数字,不点开看,全身不爽,看了又影响休假心情。基于多年经验的总结:
- 紧急的邮件不复杂,第一时间转发给正确的同事即可;
- 复杂的邮件不紧急,等休假结束后再处理;
- 既不重要也不紧急,如果是垃圾邮件,直接删除就好;
- 即紧急又重要,可以转换成一个紧急却不复杂和一个复杂但不紧急的邮件;
列好需求,发现程序可以处理上述情况1和情况3,万能工具Python可以上场了。
Python连接邮箱的方法有2种,如果你的电脑已经安装Outlook客户端,可以使用鼎鼎大名的pywin32,利用Windows平台提供的COM接口,调用Outlook客户端完成邮件的收发,连接代码只有2行:
import win32com.client as win32
outlook = win32.Dispatch("Outlook.Application").GetNamespace("MAPI")
拿到outlook对象后,我们就可以遍历其中的邮箱账户和收发件箱里的邮件。
上述方法的好处是,代码中不需要输入用户名,密码,邮箱服务名等信息,也不需要开发人员操心连接服务器的安全认证,脏活累活全都委托Outlook客户端完成,坏处是,电脑必须安装付费软件Outlook。
如果你的电脑没有安装Outlook客户端,甚至不是Windows系统,可以使用第三方包exchangelib
,通过SMTP协议访问邮箱服务器。
本文使用exchangelib处理邮件,网上文档很少,只有github托管页面的介绍。
使用前需要在线安装exchangelib,在命令控制台输入:pip install exchangelib
Python代码上场
首先需要通过SMTP协议,连接邮箱服务器,其中涉及安全认证的部分,比较复杂,会在后续文章中介绍,这里只需要照搬代码就行。
from exchangelib import Credentials, Account, DELEGATE, \
Configuration, NTLM, Message, Mailbox