電子メールには,ただ本文テキストだけを記述したシンプルなメールもあれば,添付ファイルが付属しているメールもある。文字を強調したり,イメージを貼り付けたメールも送れる。インターネット上を流れるメールは,実にバリエーションに富んでいる。ところが,インターネット・メールにはフォーマットがたった一つしかない。今回は,電子メールの標準フォーマットについて見ていく。

 電子メールの標準フォーマットは,RFC2822で規定されている。RFC2822では,メールは,(1)メール・ヘッダーと(2)メッセージ本体の二つで構成すると記述されている。先頭にメール・ヘッダーが置かれ,1行の空白行で区切られてメッセージ本体が続く構成である。

 メール・ヘッダーは,実際の郵便物でいえば「封筒」に相当する。封筒には,送り主があて名やあて先の住所などを記入する。同様に,メール・ヘッダーにも,メーラーがあて先や送信元のメール・アドレスなどの情報を記入する。例えば,メーラーのメール作成ウインドウで,あて先としてnnw-test@nikkeibp.co.jpと指定すると,メーラーはヘッダーに「To:<nnw-test@nikkeibp.co.jp>」という項目を作る。件名に「Hello」と入力すると,ヘッダーには,「Subject:Hello」という項目が作られる。

 続くメッセージ本体は,封筒の中に入っている「手紙」に当たる。ただし,手紙とはいうものの,実際の中身は,通常のテキストで書かれたメール本文だけとは限らない。画像ファイルやHTML文書などさまざまなデータも入れられる。

 しかし,ここで一つ制約がある。インターネット・メールは,メール・ヘッダーもメッセージ本体も「7ビットASCIIアスキーコード」という文字コードで構成されるという点である。

 7ビットASCIIコードとは,128種類の半角英数文字や記号などからなる文字コードのこと。128種類の文字しかないと,日本語の文字を単純に置き換えられない。JPEGの画像ファイルやMicrosoft Officeの各種ドキュメントなど,バイナリ形式のファイルもそのままでは送れない。

 そこで登場するのが「MIME」(multipurpose internet mail extensions)と呼ぶしくみである。MIMEは,7ビットASCIIコードしか扱えないインターネット・メールで,さまざまな形式のデータを扱えるようにするための枠組みを提供する。メールに入れるデータの形式や,そのデータをASCIIコードに変換する方法などを通知するためのフォーマットを決めている。

 MIMEを使うには,まずメール・ヘッダーでこのことを宣言し,次にMIMEで送るデータのタイプを「Content-Typeフィールド」に書き込む。メールの受け手はここを見ることで,中に入っているデータがどんな形式なのかを判断できる。例えば日本語のテキストを入れるなら,ヘッダーに「Content-Type:text/plain;charset="iso-2022-jp"」という1行を入れる。iso-2022-jpは,日本語を7ビットASCIIコードで表現する文字コードである。

 続いて,Content-Typeで指定したデータを,どのような方法で7ビットASCIIコードに符号化したのかを「Content-Transfer-Encodingフィールド」に記述する。上記の日本語の例だと,iso-2022-jpですでに7ビットASCIIコードになっているので「7bit」となる。

 添付ファイルが付いたメールでは,メッセージ本体をいくつかのパートに分けてMIMEの処理を行う。JPEGの画像ファイルを添付するときは,そのパートのContent-Typeフィールドで「image/jpeg」と指定し,続くContent-Transfer-Encodingフィールドで「BASE64」などの変換方式を指定する。

 こうした処理を施すことで,インターネット・メールはすべて7ビットASCIIコードのデータとしてやりとりされているのである。

斉藤 栄太郎