在之前的文章《ExchangeWebService(EWS)开发指南2——SOAPXMLmessage》介绍了SOAPXMLmessage的使用,通过Python实现了利用hash对Exchange资源的访问。
当我们通过SOAPXMLmessage读取邮件时,尝尝会遇到以下麻烦:由于每一封邮件对应一份原始的XML文件,原始的XML文件包含完整的邮件信息,人工分析邮件将耗费大量精力。
于是,本文将要介绍一种SOAPXML解析器的实现方法,编写工具实现自动提取有价值的邮件信息,提高阅读效率。
0x01简介本文将要介绍以下内容:
·适用环境
·设计思路
·开源Python实现代码
·代码开发细节
0x02设计思路通过SOAPXMLmessage读取收件箱中的所有邮件,需要以下步骤:
1.使用ewsManage.py的listmailofinbox命令获得每一封邮件的ItemId和ChangeKey
2.循环使用ewsManage.py的getmail命令,传入每封邮件对应的ItemId和ChangeKey
3.分别将返回结果保存为XML格式的文件,每一个XML文件对应一封邮件
为了保证SOAPXML解析器的通用性,能够配合不同的工具,所以将SOAPXML解析器设计成了文件管理器的结构,选中XML文件将会自动解析,提取有价值的信息并显示,在设计上遵循以下原则:
·开发语言选用Python,为了提高便捷性,全部使用Python的标准库
·文件管理器涉及到Python的界面开发,使用标准GUI库Tkinter
·SOAP(SimpleObjectAccessProtocol)协议在本质上仍为XML协议,在解析上使用标准库xml.dom.minidom
注:如果使用字符串匹配的方式对XML文件解析,还需要考虑转义字符。
0x03程序实现1.文件管理器的实现
Tkinter的使用: