详解python实现邮件解析的方法
作者:Yunlord 时间:2023-02-19 04:03:20
前言
如何通过python实现邮件解析?邮件的格式十分复杂,主要是mime协议,本文主要是从实现出发,具体原理可以自行研究。
一、安装
通过mailgun开源的Flanker库实现邮件解析。该库包含了邮件地址解析和邮件mime格式解析。
输入以下命令:
pip install flanker
二、代码实现
1.邮件头
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包含发送人,收件人,抄送人,时间等头信息。
2.邮件正文
# 邮件正文
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
通过回调函数,取出邮件正文部分
3.邮件附件
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()
判断是否为附件,将其保存下来。
来源:https://blog.csdn.net/kobepaul123/article/details/121962260
标签:python,邮件,解析
0
投稿
猜你喜欢
在ASP.NET 2.0中操作数据之六十八:为DataTable添加额外的列
2024-05-09 09:03:27
瞬间的设计 I
2009-12-25 18:54:00
Python地图四色原理的遗传算法着色实现
2022-10-07 20:57:45
Python实现随机生成手机号及正则验证手机号的方法
2021-05-30 01:41:27
关于使用python对mongo多线程更新数据
2021-08-22 22:07:12
Python随机生成彩票号码的方法
2023-10-13 15:25:39
Python实现的矩阵类实例
2023-08-13 07:52:09
oracle中的trim函数使用介绍
2023-07-11 00:37:08
python+JS 实现逆向 SMZDM 的登录加密
2023-09-22 05:38:55
mysql ON DUPLICATE KEY UPDATE语句示例
2024-01-13 11:02:48
Go语言中使用反射的方法
2023-07-22 22:31:48
Python中SOAP项目的介绍及其在web开发中的应用
2022-09-15 15:36:45
HTML文件HEAD内部标签用法浅析
2008-07-06 20:56:00
IE6局部调用PNG32合并图片
2009-03-11 21:24:00
JS实现div居中示例
2024-04-28 09:47:39
mysql高级学习之索引的优劣势及规则使用
2024-01-13 16:21:33
golang 执行命令行的实现
2024-04-28 09:14:40
pytorch多GPU并行运算的实现
2022-01-09 22:01:06
没有SQL Server数据库时如何打开.MDF文件
2024-01-15 05:58:52
浅谈python新手中常见的疑惑及解答
2022-06-23 18:45:40