MIME形式で電子メールをデコードする方法

今日送信されるほとんどの電子メールは、MIME(Multipupose Internet Mail Extensions)形式です。 これにより、プレーンテキストとリッチテキスト/ HTMLバージョン、インライン画像、および添付ファイルを使用して電子メールを送信できます。 MIME拡張機能は、標準のRFC / 822形式でメッセージに追加できるため、古いメールシステムとの下位互換性が実現されます。

ステップ1

電子メールメッセージの内容をロードします。

今日のビデオ

ステップ2

「Content-Type」ヘッダーを確認してください。 コンテンツタイプがマルチパート(つまり、「マルチパート/混合」、「マルチパート/代替」など)の場合、メッセージには解析する複数のセクションがあります。 コンテンツタイプがマルチパートの場合は、以下の手順に進みます。

ステップ3

Content-Typeヘッダーには、MIMEメッセージを生成したコードがMIME部分の境界を指定するために使用する一意の文字列が含まれている必要があります。 例:

コンテンツタイプ:マルチパート/混合; border = "part_c7161025_fe8a_45f4_83ef_6befcfa5d021"

この場合の境界文字列は「part_c7161025_fe8a_45f4_83ef_6befcfa5d021」です。

ステップ4

各MIME部分は、空白行の前に2つのダッシュ( "-")が付いた境界文字列で区切られます。 メッセージを1行ずつスキャンして、パーツの境界を探す必要があります。 境界間のすべてのテキスト 最終的なCR / LFを除く そのMIME部分の一部です。

重要:最後のMIME部分は、境界文字列とそれに続く2つのダッシュで終わります。

例:

--part_c7161025_fe8a_45f4_83ef_6befcfa5d021最初のMIME部分。

--part_c7161025_fe8a_45f4_83ef_6befcfa5d0212番目のMIME部分

--part_c7161025_fe8a_45f4_83ef_6befcfa5d021最後のMIME部分。

--part_c7161025_fe8a_45f4_83ef_6befcfa5d021--

ステップ5

次に、各MIME部分を解析する必要があります。 各MIME部分の形式は、元のRFC / 822形式のメッセージと同様です。 一連のヘッダー、空白行、本文データが含まれます。

ステップ6

MIMEパーツ自体は、独自の「Content-Type」ヘッダーと境界文字列を持つマルチパートにすることができます。 コードは、子ノードに到達するまでMIME部分を再帰的に解析する必要があります。

ステップ7

MIME部分は、単純にバイナリ添付ファイルにすることができます。 この場合、ファイル名ヘッダーは通常、転送エンコーディングとともに提供されます。 BASE64は一般的なエンコーディングタイプです。 この場合、MIME部分の本体全体をBASE64でデコードする必要があります。 例として、添付されたJPG画像の最初の数行を示します。

=NextPart_003_01C755EF.43F2628Dコンテンツタイプ:image / jpeg; name = "testimage.jpg" Content-Transfer-Encoding:base64 Content-Description:testimage.jpg Content-Disposition:attachment; filename = "testimage.jpg"

/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL / 2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj AhEBAxEB / 8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL / 8QAtRAAAgEDAwIEAwUFBAQA

ステップ8

メッセージのHTML本文は、ContentType:Text / HtmlのMIMEセクションにあり、ContentType:Multipart / AlternativeMIMEセクション内にある必要があります。

ステップ9

メッセージのプレーンテキスト本文は、ContentType:Text / plainのMIMEセクションにあり、ContentType:Multipart / AlternativeMIMEセクション内にある必要があります。

必要なもの

  • コンピューター言語(C ++、C#、VBなど)の知識。

  • RFC / 822形式の電子メールメッセージの形式に関する基本的な知識。

ヒント

RFC822を参照してください http://www.ietf.org/rfc/rfc0822.txt? 番号= 822 およびRFC1341 http://www.ietf.org/rfc/rfc1341.txt? 番号= 1341 詳細については。 C#でコーディングしている場合は、優れた無料のライブラリを次のURLで入手できます。 http://www.codeproject.com/csharp/mime_project.asp.