|
Multipurpose Internet Mail Extension(多目的インターネットメール拡張)は、規格上US-ASCIIのテキストしか使用できないインターネットの電子メールでさまざまなフォーマット(書式)を扱えるようにする規格。通常はMIME(マイム)と略される。RFC 2045, RFC 2046, RFC 2047, RFC 2048, RFC 2049 で規定されている。 インターネットでメールの書式を定めているRFC 822とそれを更新するRFC 2822では、英数字といくつかの記号を7bitで表現する「US-ASCII」と呼ばれる文字コードの利用したテキストデータしか許していない。そのため、US-ASCIIだけで表現出来ない言語や、バイナリデータ、画像、音声などの非文字データを利用することができなかった。 MIMEはこれらのデータを取り扱うために新しくいくつかのヘッダを定義し、かつUS-ASCII上でさまざまなデータタイプを表現するための符号化方法を規定している。 RFC 822及びRFC 2822では一通のメールで一つの本文しか扱う事が出来ないが、MIMEでは本文を分割して複数のコンテンツを扱う事が出来るようにした。これをマルチパートと呼ぶ。 また、HTTPにおけるデータの伝送に関しても、MIMEの枠組みが援用されている。
MIMEで導入されたヘッダMIME-Version従来のRFC 822 (RFC 2822) 準拠のメッセージとの区別、あるいは将来MIMEが拡張されたときにバージョンを区別するためのヘッダ。現在は1.0が規定されている。 Mime-Version: 1.0 Content-Typeこのメッセージ中のデータのタイプを指定する。 一般的な書式は次の通り。 Content-Type: [type]/[subtype]; parameter typeには、"text"(テキスト), "image"(画像), "audio"(音声), "video"(動画), "application"(アプリケーションプログラム固有のフォーマット)などを指定して、データそのものの型を指定できる他、"message", "multipart"を指定することで、一つのMIME messageの中にさらに別のMIME messageを指定することもできる。 subtypeには、typeの詳細な形式を指定する。以下のようなものがよく使われる。
なお、正式なsubtypeが与えられていないデータ形式には、x-で始まる独自の名称を使うことができる(例: application/x-gzip)。 また、vnd.で始まるベンダー固有の名称を使うこともできる(例: application/vnd.ms-excel)。 parameterは追加の情報を指定する。よく使われるものに、text/plainやtext/htmlの文字コード系を明記するcharsetパラメータがある。 typeによってはデフォルトのsubtypeが規定されており、受信側は自分の扱えないsubtypeであってもデフォルトのsubtypeとして扱うことにより最低限の取り扱いが可能となる。textのデフォルトはtext/plain、applicationのデフォルトはapplication/octet-stream、multipartのデフォルトはmultipart/mixedである。 Content-Transfer-EncodingMIMEではUS-ASCIIだけでなくデータのさまざまな符号化方法の指定がこのヘッダで可能になっている。 書式は以下の通り。 Content-Transfer-Encoding: [mechanism] mechanismとして、"7bit", "8bit", "binary", "quoted-printable", "base64"が指定できる。一般的に利用出来るのは"7bit", "quoted-printable", "base64"であり、"8bit", "binary"は一定の条件を満たす場合しか利用出来ない。 7bitデフォルト値。7bitのテキストを表す。 Content-Transfer-Encodingヘッダフィールドを省略した場合は、この7bitを指定したのと同じ意味となる。 US-ASCIIやISO-2022-JPは7bitのテキストであるため、これにあたる。 8bit8bitのテキストを表す。 RFC 822やRFC 2822は7bitのテキストを前提としており、この8bitは意図的に違反するものである。メールを転送するためのプロトコルSMTPは基本的に7bitテキストしか転送できないため、このエンコーディングを用いることは出来ない。RFC 1652で定義されるSMTPの拡張(ESMTP)の8BITMIMEを用いるか、8bitを許容するような全く別のプロトコルを用いた場合のみ利用が可能である。 binaryデータがテキストではなくバイナリであることを表す。RFC 822やRFC 2822はテキストを前提としており、このbinaryは意図的に違反するものである。SMTPは基本的に行単位でデータを扱うため、行の概念すらないバイナリは転送できない。RFC 3030で定義されるESMTPの一つであるBINARYMIMEを用いるか、バイナリを許容するような全く別のプロトコルを用いた場合のみ利用が可能である。 quoted-printableUS-ASCIIに存在する文字はそのまま使い、存在しない文字だけ'=??'のような形でコード化する。ここで、??には特殊文字のコードを16進数で指定する。その他、以下のような規則がある。
ヨーロッパ系の言語では、多くの文字がUS-ASCIIと同一で一部に独自の文字を使っているものが多い。 この場合にquoted-printableを用いると、特殊文字以外はそのままの文字を使用しているので、データがほとんど大きくならず、quoted-pritable対応プログラムを使わなくても、大体の内容が読めるという利点がある。 しかし通常のバイナリデータや、Shift_JISやEUC-JPといった日本語などの非ヨーロッパ系の言語のテキストデータにquoted-printableを適用した場合はBase64を使用した場合よりも大幅にデータが大きくなる。 Base643オクテット (24bit) を6bitずつ4つに分割し、各6bitの値に対してそれぞれUS-ASCIIの64文字(英字52文字、数字10文字、「+」、「/」)を割り当てる符号化方式。詳細は「Base64」の項を参照。 この符号化によって、SMTPなどUS-ASCIIしか許されていない通信路でもバイナリデータを交換できるメリットはあるが、データ容量は33%増加する。 ヘッダでのnon US-ASCII 文字の扱い上記のヘッダの導入によって、body部のデータタイプや符号化方式は指定できるようになったが、このままではヘッダ部は相変わらずUS-ASCIIしか利用できない。MIMEではRFC 2047によって、ヘッダ部分でのnon US-ASCII文字の扱いを規定している。これによれば、 =?charset?encoding?encoded-text?= という形式により、文字コード系がcharset、符号化方法がencodingで、encoded-textと符号化された単語を表現できる。charsetはContent-Type:Text/Plainにおけるcharsetパラメータで指定するのと同じ、IANAに登録された文字列を用いる。encodingはQまたはB(大文字でも小文字でもよい)であり、前者はほぼQuoted-Printableと同じ符号化方法、後者はBASE64を用いることを表す。
関連項目 |
This article is from Wikipedia. All text is available under the terms of the GNU Free Documentation License.
Mercedes Car
This site monitored by SitePinger.net