Python,从 mbox 文件中提取原始内容

Posted

技术标签:

【中文标题】Python,从 mbox 文件中提取原始内容【英文标题】:Python, extract raw contents from mbox file 【发布时间】:2017-11-26 19:43:22 【问题描述】:

mbox 文件中,我存储了一些电子邮件:它们也可以使用 MIME。它们必须按原样mbox 文件中提取,无需修改,使用Python3 脚本。我尝试了以下代码:

import mailbox

for message in mailbox.mbox('mboxfile'):
    mstring = message.as_string()
    print(mstring)

这似乎打印了电子邮件的原始内容。 mbox 中的电子邮件并不总是将\r\n 用于所有新行:有时它们只有\n。无论如何,在message.as_string() 输出中始终使用\n,如manual page 中所指定。

手册中还写到(关于as_string()):

请注意,提供此方法是为了方便,可能不是在应用程序中序列化消息的最有用方法,尤其是在处理多条消息时。

我无法完全理解这个建议可能意味着什么。我的mbox 文件显然包含几封电子邮件,我想将它们全部提取出来。最重要的是,我想获得 exactly 存储在那里的相同原始电子邮件,而不需要 任何 修改并为每一行保留其 original @ 987654333@ 或\n,就好像我在mbox 文件上使用了cat。所以:

我的代码是执行此操作的正确方法吗? 如果不是,正确的方法是什么?

【问题讨论】:

【参考方案1】:

如果你想要内容不做任何修改,你可以简单地print()每个message

import mailbox

for message in mailbox.mbox('mboxfile.mbox'):
    print(message)

带有.mbox 扩展名的文件只是很长的纯文本文件: https://en.wikipedia.org/wiki/Mbox


还可以查看 email 模块来处理电子邮件消息:https://docs.python.org/3/library/email.message.html

【讨论】:

以上是关于Python,从 mbox 文件中提取原始内容的主要内容,如果未能解决你的问题,请参考以下文章

从 MBOX 文件中提取纯文本/文本和 html 正文到列表

使用 mobox Python 模块解码和访问 mbox 文件

从 mbox 写入 html 文件

如何在 Python 中提取 Azure JSON blob 文件内容

从 MP3 中提取原始音频/波形

谷歌浏览器直接提取的xpath,在python中为啥无法提取相应内容