如何将多个 eml 文件转换为一个 mbox 文件?

如何将多个 eml 文件转换为一个 mbox 文件?

5 年前甚至更早之前就有人问过类似的问题,而这些答案现在已经过时了。另外,我不想使用在线服务。

我希望将数千个 eml 文件转换为一个 mbox 文件。

这里有人知道这是否可以做到,以及如何做到吗?

谢谢。

答案1

结论

这种转换的格式并不复杂,并且应该使用像这样的 shell 循环从任意数量的 EML 文件自动生成 MBOX 文件(确保file.mbox在运行之前同一目录中不存在名为的文件):

for e in *.eml
  do
    date +"From - %a %b %d %H:%M:%S %Y" >> file.mbox
    cat "$e" >> file.mbox
    echo >> file.mbox
    done

...当从包含文件的目录中运行时*.eml,应该在最后创建一个名为的文件file.mbox

回头客:)

所有重要信息,即邮件标头邮件正文应包含在每一个EML 文件.eml遵循EML 标准自 1982 年起,大多数电子邮件客户端均以此标准来解析/处理电子邮件消息文件,并且在大多数情况下应保持包含发件人电子邮件和时间戳的标头以及邮件正文的完整性。

MBOX 文件格式另一方面,直到二十多年后才标准化......从本质上讲,它是一种用于容纳多封电子邮件消息的单一容器(应遵循标准化的 EML 格式)。

然而,目前 MBOX 文件格式标准自 2005 年起) 简单来说如下:

首先,FromF,,和后跟一个空格r,然后是某种电子邮件地址,然后是另一个空格,后跟时间戳,后跟行尾指示符,紧接着下一行(不需要空行),消息应该开始,然后以一个空行结束(没有空格或制表符,只有一个空行)...然后该格式在整个 MBOX 文件中重复,电子邮件客户端应该解析该文件,直到没有更多数据或到达文件末尾。om

我记得很久以前就处理过这样的问题,如果我没记错的话,From我在生成的 MBOX 文件中使用的行如下所示:

From - Tue Nov 21 17:30:08 2023

...据我所知,这大多被电子邮件应用程序忽略,并在这里作为记录分隔符添加,任何时间戳都应该用于此目的(如果需要,您的邮件客户端可能会提供修复这些行的功能)。

相关内容