MIME消息结构解析与分析

Posted

技术标签:

【中文标题】MIME消息结构解析与分析【英文标题】:MIME message structure parsing and analysis 【发布时间】:2012-02-21 04:05:00 【问题描述】:

我正在寻找现有的库或代码示例,以从 mime 消息结构中提取相关部分,以便对这些部分的文本内容进行分析。

我会解释:

我正在编写一个库(在 Python 中),它是需要通过 IMAP 迭代大量电子邮件的项目的一部分。对于每条消息,它需要确定它需要哪些 mime 部分,以便分析需要最少解析量的消息的文本内容(例如,更喜欢 text/plain 而不是 text/html 或富文本)并且没有重复(即如果 text/plain 存在,则忽略匹配的 text/html)。它还需要处理嵌套部分(文本附件、转发的消息等)以及所有这些,而无需下载整个消息正文(需要太多时间和带宽)。最终目标是稍后仅检索这些部分,以便对这些消息的文本内容(不包括任何标记、元数据、二进制数据等)执行一些统计和模式分析。

我看到的库和示例需要完整的消息正文才能组装消息结构并理解消息的内容。我正在尝试使用来自 IMAP FETCH 命令的响应和 BODYSTRUCTURE 数据项来实现这一点。

BODYSTRUCTURE 应该包含足够的信息来实现我的目标,但是尽管结构和返回的数据已正式记录在相关的 RFC(3501、2822、2045)中,但嵌套、组合和各种怪癖的数量加起来就构成了任务非常乏味和错误修剪。

有没有人知道任何可以帮助实现此目的的库或任何代码示例(最好是 Python,但任何语言都可以)?

【问题讨论】:

【参考方案1】:

模块 email 和子模块 email.mime 有什么不能做的吗?

http://docs.python.org/library/email.html#module-email

【讨论】:

不。正如我所说,我需要在不下载整个邮件的情况下分析 mime 结构,并且电子邮件模块需要邮件正文来解析邮件。 好的。这看起来很有趣,但我找不到实际代码,mail.python.org/pipermail/python-dev/2009-January/085083.html【参考方案2】:

为了完整起见回答我自己的问题并结束这个问题。

我找不到任何满足要求的现有库。我最终编写了自己的代码来获取 BODYSTRUCTURE 树,对其进行解析并将其存储在内部结构中。这让我可以控制我需要确定我需要实际下载的消息的哪些确切部分,并考虑到各种情况,如附件、转发、冗余部分(纯文本与 html)等。

【讨论】:

您是否在某处提供了该代码?

以上是关于MIME消息结构解析与分析的主要内容,如果未能解决你的问题,请参考以下文章

解析 MIME 消息

使用 anmar.SharpMimeTools 解析 MIME 消息

无法解析 Mime 消息

MIME 电子邮件多部分解析器 [重复]

Python:如何在注意图形结构的同时迭代 MIME 消息树?

Flutter 安卓 Platform 与 Dart 端消息通信方式 Channel 源码解析