Mbox格式

电子邮件客户端如何将邮件存储在您的硬盘上

存储邮件消息的最常见格式是mbox格式。 MBOX代表MailBOX。 mbox是包含零个或多个邮件消息的单个文件。

mbox格式

如果我们使用mbox格式存储电子邮件,我们将它们全部放在一个文件中。 这会创建或多或少的长文本文件(Internet电子邮件始终只存在为7位ASCII文本,其他所有内容(例如,附件)都是编码的 ),其中包含一封电子邮件。 我们如何知道哪里结束而另一个开始?

幸运的是,每封电子邮件在开始时至少有一个“发件人”。 每条消息都以“From”开头 (From后跟一个空白字符,也称为“From_”行)。 如果该行开头的这个序列(“From”)前面有一个空行或者位于文件的顶部,我们已经找到了一条消息的开头。

因此,当我们分析一个mbox文件时,我们所寻找的是一个空行,后面跟着“From”。

作为正则表达式,我们可以将其写为“\ n \ nFrom。* \ n”。 只有第一条消息是不同的。 它从一行开头的“From”开始(“^ From。* \ n”)。

"从" 在身体里

如果上面的序列出现在电子邮件正文中会怎样? 如果以下内容是电子邮件的一部分,会怎样?

...我向您发送最近的报告。

从这份报告中,你不需要......

在这里,我们有一条空行,然后在行的开头加上“From”。 如果这出现在一个mbox文件中,我们无疑有一个新消息的开始。 至少这就是解析器认为的 - 以及为什么电子邮件客户端和我们都会被一封既不包含发件人也不包含收件人的电子邮件混淆,而是以“From this report”开头。

为了避免这种灾难性的情况,我们需要确保“From”不会出现在电子邮件正文的空行后面的行的开头。

每当我们向mbox文件添加新消息时 ,我们都会在主体中查找这些序列,并简单地将“From”替换为“From”。 这使得曲解变得不可能。 上面的例子现在看起来像这样,不再触发解析器:

...我向您发送最近的报告。

>从这份报告中,你不需要......

这就是为什么你有时可能会发现“>来自”的电子邮件,你只会期望来自“发件人”。