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”。 這使得曲解變得不可能。 上面的例子現在看起來像這樣,不再觸發解析器:

...我向您發送最近的報告。

>從這份報告中,你不需要......

這就是為什麼你有時可能會發現“>來自”的電子郵件,你只會期望來自“發件人”。