您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:详解python实现邮件解析的方法

51自学网 2022-02-21 10:44:53
  python
这篇教程详解python实现邮件解析的方法写得很实用,希望能帮到您。

前言

如何通过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()判断是否为附件,将其保存下来。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注51zixue.net的更多内容!


一文带你搞懂Python上下文管理器
Python实现圣诞树的多种方法
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。