基于Python实现邮件解析的代码是什么
Admin 2022-05-21 群英技术资讯 544 次浏览
如何通过python实现邮件解析?邮件的格式十分复杂,主要是mime协议,本文主要是从实现出发,具体原理可以自行研究。
通过mailgun开源的Flanker库实现邮件解析。该库包含了邮件地址解析和邮件mime格式解析。
输入以下命令:
pip install flanker
def emlAnayalyse(path): with open(path, 'rb') as fhdl: raw_email = fhdl.read() eml = mime.from_string(raw_email) subject = eml.subject eml_header_from = eml.headers.get('From') eml_header_to = eml.headers.get('To') eml_header_cc=eml.headers.get('Cc') eml_time = eml.headers.get('Date') # get_annex(eml, '1') eml_attachs=attachEml1(eml) eml_body = contentEml(eml) f = HTMLFilter() f.feed(eml_body) print(f.text) def main(): path='邮件名.eml' emlAnayalyse(path) if __name__ == "__main__": main()
其中eml.header包含发送人,收件人,抄送人,时间等头信息。
# 邮件正文 def contentEml(eml): # 判断是否为单部分 if eml.content_type.is_singlepart(): eml_body = eml.body else: eml_body = '' for part in eml.parts: # 判断是否是多部分 if part.content_type.is_multipart(): eml_body = contentEml(part) else: if part.content_type.main == 'text': eml_body = part.body return eml_body
通过回调函数,取出邮件正文部分
def attachEml1(eml): for part in eml.parts: if not part.content_type.is_multipart(): name = part.detected_file_name with open(name, 'wb') as annex: annex.write(part.body)
通过content_type.is_multipart()
判断是否为附件,将其保存下来。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了python如何实现排序,并标上序号,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
这篇文章主要介绍了用Python实现写倒序输出(任意位数),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
这篇文章主要介绍了Python pluggy框架基础用法总结,本文通过三个例子结合代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
这篇文章主要介绍了python中常见进制之间的转换方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
图像的轮廓检测不论是机器视觉还是其他方面都有较大作用,下面这篇文章主要给大家介绍了关于如何使用Python OpenCV提取物体轮廓的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008