Microsoft SMTP サービスによってドロップされた EML ファイルを読み取って解析します。私はさまざまなストリーム クラスを使用する初心者です。これらのファイルを解析する私が見た実装では、System.IO.Stream のバリエーションを使用してバイト単位で読み取ります。ただし、これらのファイルはテキスト以外のものであってはならないようです。StreamReader を使用した方がよいのではないでしょうか? もしそうなら、デフォルト (UTF-8) エンコーディング以外のものを使用する理由はありますか?
1 に答える
1
テキストである必要がありますが、常にそうであるとは限りません。
電子メールは、8ビットまたはバイナリでエンコードできます。
StreamReaderは、解析する電子メールの約99%で機能します。
しかし、正直なところ、それは最大の問題ではありません。
問題は、正しい文字セットを使用するとともに、Mimeのルールに従って実際にMimeコンテンツを解析および抽出することです。
UTF-8は非常に大きな文字セットであり、大部分の電子メールの解析に使用できますが、その文字セットを使用して電子メールを解析しようとすると、コンテンツが破損する可能性があります。
これを行う最良の方法は、実際に電子メールをバイナリ形式で読み取り、文字セットを抽出してから、ヘッダーにある指定された文字セットを使用して電子メールを読み取るように切り替えることです。
于 2010-03-01T15:06:06.827 に答える