このページの本文へ

電子メールの秘密 第3回

互換性を実現するためのメッセージの形式を知ろう!

メールの中身をのぞいてみませんか?

2009年07月14日 09時00分更新

文● 遠藤哲

  • この記事をはてなブックマークに追加
  • 本文印刷

MIMEとは

 さて、ヘッダ情報を見ると、すべてアルファベットや数字、記号で記述されている点に気がついただろう。現在のメールシステムは英語圏で生まれたため、記述に使用できるのはASCII文字(アルファベット、数字、記号)だけである。しかし、メールクライアント上ではヘッダにある件名は日本語で表示されている。それはなぜなのだろうか。

 その答えが“MIME(Multipurpose Internet Mail Extension)”というヘッダフィールドだ。これは、RFC 2822から独立して定義されたオプションのヘッダフィールドである。MIMEに関するRFCはPart 1~5に分冊して発行されており、このうちRFC 2045 MIME Part 1でMIMEのメッセージ形式とヘッダフィールドを定義している。

 ここではMIMEの代表的な3つのヘッダフィールドについて説明しよう(図2)。“MIME-Version”フィールドはMIME仕様のバージョンを示す。MIMEの現在バージョンは1.0である。将来の仕様変更にも柔軟に対応し、互換性の問題を生じさせないようにするために用意されたフィールドだ。

図2 MIMEの代表的な3つのヘッダフィールド

 次は“Content-Type”フィールドである。このフィールドはMIMEで扱うコンテンツのメディアタイプとパラメータを定義するフィールドだ。フォーマットは図2に示されているように“type”“subtype”と“parameter”の3つで成り立っている。“type/subtype”に指定できるメディアタイプの種類は多く、設定できる値はIANA(Internet Assigned Numbers Authority)で管理されている。

 そして、3つ目が “Content-Transfer-Encoding”フィールドだ。このフィールドは情報の符号化形式を示すフィールドである。

 理解を深めるためにMIMEヘッダの具体例を挙げてみよう。まずはテキスト形式のメールメッセージを日本語で書いた場合だ。この場合はプレーンテキストなのでContent-Typeを「text/plain」、パラメータとして日本語の記述に使う文字コードの「charset=iso-2022-jp」が設定される。これは2バイトで表現される日本語の文字を7ビットで表わすための符号化形式である。

 次に添付ファイルで画像などを送った場合は、画像データもASCIIの文字列に変換される。たとえばビットマップ形式の画像を添付するとContent-Typeは“image/bmp”、パラメータにはそのファイル名が設定される。画像はバイナリのデータであるため、ASCII文字を前提としているメールシステムでは不具合を起こす可能性がある。そのため画像情報を3バイト単位で切り出し、ASCIIの4文字に変換する「BASE64」という符号化が用いられる。

(次ページ、「文章と画像を送る仕組み」に続く)


 

カテゴリートップへ

この連載の記事