メールメッセージの保存の最も一般的な形式は、mbox形式です。 MBOXはMailBOXの略です。 mboxは、0個以上のメールメッセージを含む1つのファイルです。
mbox形式
電子メールを格納するためにmbox形式を使用する場合は、すべてのファイルを1つのファイルに格納します。これにより、長いテキストファイルが作成されます(インターネット電子メールは常に7ビットのASCIIテキストとしてしか存在しません。他のすべて - 添付ファイルなど - エンコードされます)。どこが終わり、どこが始まるのか、どうやって分かりますか?
幸いにも、すべての電子メールは、最初から少なくとも1つのFrom行を持っています。 すべてのメッセージは「From」で始まり、 (これに続いて、 "From_"行とも呼ばれる空白文字が続きます)。行の先頭にあるこのシーケンス( "From")の前に空行があるか、ファイルの先頭にある場合、メッセージの先頭が見つかりました。
だから、mboxファイルを解析するときに探すのは、本質的に空の行の後に "From"が続くことです。
正規表現として、これを " n nFrom。* n"と書くことができます。最初のメッセージだけが異なります。それは単に行の先頭にある "From"で始まります( "^ From。* n")。
体の "から"
電子メールメッセージの本文に上記のシーケンスが正確に表示されたらどうなりますか?以下がメールの一部である場合はどうなりますか?
- …最新の報告書をお送りします。
- このレポートから、あなたは必要はありません…
ここでは、行の先頭に "From"が続く空の行があります。これがmboxファイルに表示された場合、私たちは間違いなく新しいメッセージの開始点を持っています。少なくともパーサーは何を考えているのですか、なぜ電子メールクライアントと私たちは、送信者も受信者も含まず、「このレポートから」で始まる電子メールメッセージとはまったく混同されます。
このような悲惨な状況を避けるために、電子メールの本文に空白行が続く行の先頭に「From」が表示されないようにする必要があります。
私たちはmboxファイルに新しいメッセージを追加するたびに、ボディ内のそのようなシーケンスを探し、単に "From"を "> From"に置き換えます。これは、誤解を不可能にする。上記の例は、このようになり、パーサーを起動することはありません。
- …最新の報告書をお送りします。
- >このレポートから、あなたは必要はありません…
このため、「From」という単なる「Eメール」の中で、「> From」が見つかることがあります。




