MIME(Multipurpose Internet Mail Extensions)のしくみ

MIMEを使用すると、添付ファイルを電子メールで簡単に送信できます。 これはどのように動作するのですか?

MIMEは、 "Multipurpose Internet Mail Extensions"の略です。 それは複雑で無意味でもありますが、MIMEはインターネットメールの本来の機能をエキサイティングな方法で拡張します。

電子メールメッセージは1982年以来RFC 822(およびRFC 2822以降)で定義されており、おそらくこの標準には今後も引き続き従います。

テキスト、プレーンテキスト以外のもの

残念なことに、RFC 822には多くの欠点があります。 特に、その標準に準拠するメッセージには、平易なASCIIテキスト以外のものは含まれていてはなりません。

ファイル(写真、テキストプロセッサ文書またはプログラムのようなもの)を送るためには、それらをプレーンテキストに変換してから変換の結果を電子メールメッセージの本文に送る必要があります。 受信者は、メッセージからテキストを抽出し、再度バイナリファイル形式に変換する必要があります。 これは面倒なプロセスであり、MIMEの前には手作業で行う必要がありました。

MIMEはRFC 822に添付されているこの問題を修正し、電子メールメッセージに国際文字使用することも可能にします 。 plain(英語)テキストに対するRFC 822の制限により、これは以前は不可能でした。

構造の欠如

ASCII文字に制限されることに加えて、RFC 822は、メッセージの構造やデータの形式を特定しません。 プレーンテキストデータの迷惑メールが常に発生することは明らかですので、標準が定義されている場合は必要ありません。

これに対して、MIMEは、1つのメッセージ(例えば、画像とWord文書)に複数の異なるデータを送信することができ、受信者の電子メールクライアントにメッセージの表示形式を教えてメッセージを表示することができます。

あなたが写真を撮るとき、あなたはもはやそれがイメージビューアで見ることができることを理解する必要はありません。 あなたの電子メールクライアントは、イメージ自体を表示するか、コンピュータ上でできるプログラムを起動します。

RFC 822の構築と拡張

MIME魔法はどうやって動くのですか? 基本的には、上記のプレーンテキストで任意のデータを送信する煩雑なプロセスを採用しています。 MIMEメッセージ標準は、RFC 822で規定されている標準を置き換えず、拡張しています。 MIMEメッセージには、ASCIIテキスト以外の文字を含めることはできません。

つまり、メッセージが送信される前に、すべての電子メールデータをプレーンテキストでエンコードしなければならず、受信側で元の形式にデコードする必要があります。 初期の電子メールユーザーは手動でこれを行う必要がありました。 MIMEは、通常、 Base64エンコーディングと呼ばれるスマートなプロセスを通じて、快適かつシームレスにそれを行います。

人生をMIMEメールメッセージとして

MIME対応の電子メールプログラムでメッセージを作成すると、プログラムは大体次のようになります。

まず、データのフォーマットが決定されます。 これは、受信者の電子メールクライアントにデータの処理方法を伝え、適切なエンコーディングを保証して転送中に何も失われないようにするために必要です。

次に、データがプレーンASCIIテキスト以外の形式であれば、データがエンコードされます。 エンコード処理では、データはRFC 822メッセージに適したプレーンテキストに変換されます。

最後に、エンコードされたデータがメッセージに挿入され、受信者の電子メールクライアントに、どのような種類のデータが通知されますか?添付ファイルはありますか? それらはどのようにコード化されています 元のファイルはどのような形式ですか?

受信者側では、処理が逆になります。 まず、電子メールクライアントは、送信者の電子メールクライアントによって追加された情報を読み取ります。添付ファイルを探す必要がありますか? どのようにそれらをデコードするのですか? どのように結果ファイルを処理するのですか? 次に、メッセージの各部分が抽出され、必要に応じてデコードされます。 最後に、電子メールクライアントは結果のパーツをユーザーに表示します。 平文の本文は、 画像添付ファイルと共に電子メールクライアントに表示されます 。 メッセージに添付されているプログラムには添付アイコンが表示され、ユーザーはそのアイコンを使って何をするかを決めることができます。 彼女はディスクのどこかに保存したり、電子メールプログラムから直接起動することができます。