メールフォーマットに関する仕様(テキストメールとMIMEによる拡張)を簡単にまとめた。
-
RFC 5322(旧RFC 2822、RFC 822)に定義されるテキストメールには以下の問題があった。
- ヘッダ・本文にASCII(US-ASCII)しか利用できない。
- ASCII以外の文字を利用する地域では、本文に対する文字コードを独自に決めた(日本ではISO-2022-JP)ため、地域間の互換性がなくなった。
- 本文はテキスト形式のみであり、1つのメールで1つの本文しか扱うことができない。
- バイナリファイルを格納するために、uuencode形式のエンコードが用いられたが、これは一部のシステムで誤動作を起こす可能性があった。
- ヘッダ・本文にASCII(US-ASCII)しか利用できない。
- これらの問題を解決するためMultipurpose Internet Mail Extension (MIME) が定義された。
- MIMEで定義される仕様のポイントは以下の通り。
- ヘッダで非US-ASCII文字を利用できる。
- 書式:
=?charset?encoding?encoded-text?=
- メールの件名に日本語を使うことができるようになった。
- 書式:
- Content-Typeヘッダでデータ形式を指定する。
- 書式:
Content-Type: type/subtype; parameter
- type(大分類)とsubtype(小分類)を分けて記述できるため、受信者は非対応のsubtypeに対しても最低限の取り扱いが可能となる。
- テキスト形式の場合にはparameterで文字コードを指定できる。
- 書式:
- マルチパート(
Content-Type: multipart/...
)により本文を複数に分割できる。- 本文と添付ファイルを1つのメールで送信する、本文にHTML形式と代替用のテキスト形式の両方を含める、といったことが可能となる。
- Content-Transfer-Encodingヘッダでデータのエンコード形式を指定する。
- 書式:
Content-Transfer-Encoding: mechanism
- uuencodeはサポート対象外となっている。
- 書式:
- ヘッダで非US-ASCII文字を利用できる。
参考
- MIMEの基礎
- Multipurpose_Internet_Mail_Extensions - Wikipedia
- [UNIX/Linuxの部屋 uuencodeコマンドの使い方](UNIX/Linuxの部屋 uuencodeコマンドの使い方)