详解python实现邮件解析的方法

 更新时间:2021年12月19日 17:06:35   作者:Yunlord  
这篇文章主要为大家介绍了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()判断是否为附件,将其保存下来。

总结

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

相关文章

  • Python实现8个概率分布公式的方法详解

    Python实现8个概率分布公式的方法详解

    在本文中,我们将介绍一些常见的分布(均匀分布、高斯分布、对数正态分布等)并通过Python代码进行可视化以直观地显示它们,感兴趣的可以学习一下
    2022-05-05
  • Python只用40行代码编写的计算器实例

    Python只用40行代码编写的计算器实例

    这篇文章主要介绍了Python只用40行代码编写的计算器,结合完整实例形式分析了Python计算器的具体实现技巧,需要的朋友可以参考下
    2017-05-05
  • Python语言中的if语句详情

    Python语言中的if语句详情

    这篇文章主要介绍了Python语言中的if语句详情,每条if语句的核心都是一个值为True或False的表达式,这种表达式被称为条件测试,下面文章介绍python语言的if语句详细内容,需要的小伙伴可以参考一下
    2022-02-02
  • Python爬虫爬取新闻资讯案例详解

    Python爬虫爬取新闻资讯案例详解

    这篇文章主要介绍了Python爬虫爬取新闻资讯案例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • 基于python获取本地时间并转换时间戳和日期格式

    基于python获取本地时间并转换时间戳和日期格式

    这篇文章主要介绍了基于python获取本地时间并转换时间戳和日期格式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • Python中使用MELIAE分析程序内存占用实例

    Python中使用MELIAE分析程序内存占用实例

    这篇文章主要介绍了Python中使用MELIAE分析程序内存占用实例,本文直接给出使用代码示例,需要的朋友可以参考下
    2015-02-02
  • Python dict和defaultdict使用实例解析

    Python dict和defaultdict使用实例解析

    这篇文章主要介绍了Python dict和defaultdict使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • OpenCV图像识别之相机校准Camera Calibration学习

    OpenCV图像识别之相机校准Camera Calibration学习

    这篇文章主要为大家介绍了OpenCV图像识别之相机校准Camera Calibration学习,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • Python光学仿真学习处理高斯光束分布图像

    Python光学仿真学习处理高斯光束分布图像

    这篇文章主要为大家介绍了Python光学仿真学习之如何处理高斯光束的分布图像,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-10-10
  • python爬虫之selenium库的安装及使用教程

    python爬虫之selenium库的安装及使用教程

    今天带大家来学习怎么安装使用selenium库,文中有非常详细的图文介绍,对正在学习python爬虫的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05

最新评论