インターネットを経由してメールを送信する場合,送信できるデータは通常ASCIIコードの範囲内に限られます. ASCIIコードは7ビットのコード体系で,アルファベットや数字,いくつかの記号と改行やタブなどの制御コードくらいしか含まれていません. ASCIIコードに含まれる目に見える文字はキーボードから直接入力できる文字だけだと思ってください.
ふだん日本語の文書を作る場合,WindowsやMS-DOSがインストールされたパソコンではShift-JISコード(MS漢字コード), LinuxやFreeBSDがインストールされたパソコンやワークステーションではEUC (Extended UNIX code;拡張UNIXコード)とよばれるコード体系で文書を作成していると思います. Shift-JISコードやEUCは8bitのコード体系ですから,メールで送信することはできません.
しかし,実際にはWindowsやUNIXで日本語の文書を作成していても,問題なくメールで送信できているはずです. これは,メールの送受信を担当しているアプリケーション, 例えばMicrosoft Internet MailやOutlook Express,Emacs/cmailなどのアプリケーションが, 実際に送信をおこなう前に自動的にJISコードに変換してくれているからです. ユーザーが気にしていなくても, インターネットでやりとりされるメールは必ずASCIIコードやASCIIコードと互換性のある JISコードなどのような7bitのコード体系を使用する決まりになっています.
ここまでで,インターネットを経由するメールではASCIIコードしか扱えないこと, 日本語の文書の場合はJISコードに変換することでASCIIコードと互換性のある7ビットのコード体系に直せ, メールで送信できるようになることがわかりました. しかし,日本語の文書のように簡単に7ビットのコード体系に直せるものはよいのですが, そうでないものをメールで送信したい場合はどうしたらいいのでしょうか?
Shift-JISコードあるいはEUCからJISコードのような簡単な変換ができないものとは, 具体的にはプログラムや画像や音声などのバイナリーファイルです. バイナリーファイルをメールで送信できるASCIIコードと互換性のある形式に直す方法は, 基本的にはある規則にしたがってバイナリーコードを7ビットのASCII文字と置き換えていくというものです. 例えば,あるバイナリーファイルの先頭1バイトが16進数でF7(10進数で247)だったとすると, これを「F7」という2バイトの文字列に直すというようなやり方です. 受信した側はこれとは逆の操作を行って元のバイナリーファイルを取り出すことができます. このような一連の操作をバイナリ・テキスト変換と呼んだりします (また,変換することをエンコードする,逆変換することをデコードするといいます).
バイナリ・テキスト変換を手作業で行うのはたいへんですから,通常は専用のプログラムを使うことになります. ずっと昔はMS-DOSではISH,UNIXではuuencodeというプログラムが使われていました. しかし,日本語の文書の場合には必ずJISコードで送信することが決まっていたので混乱することもなかったのですが, バイナリ・テキスト変換の場合には特に決まりがあったわけではなく, 受け取った側が目で見てuuencode形式であるというように判断する必要がありました.
このままでは不便なので,最近になってバイナリファイルを添付する場合の決まりができました. それがMIME (Multipurpose Internet Mail Extensions)です. MIMEではいくつかのエンコード方法を規定していますが, ふつう「MIME形式でファイルを添付する」といえばBase64形式でファイルを添付することをさしています. MIME形式でファイルを添付したメールは次のようなものになります.
--Multipart_Tue_Sep_29_07:46:36_1998-1 Content-Type: text/plain; charset=ISO-2022-JP MIMEでファイルを添付したメールの例. --Multipart_Tue_Sep_29_07:46:36_1998-1 Content-Type: application/octet-stream Content-Disposition: attachment; filename="list" Content-Transfer-Encoding: base64 IyptYWlsKiNhMDAzRGYjICAgYmFrLyAgICAgICAgICAgICAgaW5kZXguYnQgICAgICAgICAg b3JnLwo5NTUwLyAgICAgICAgICAgICBiaW4vICAgICAgICAgICAgICBqdXN0LmtwICAgICAg ICAgICBwcml2YXRlLwpHTlVzdGVwLyAgICAgICAgICBjYWxlbmRhciAgICAgICAgICBqdXN0 LmtwZGVmICAgICAgICBwdWJsaWNfaHRtbC8KTWFpbC8gICAgICAgICAgICAgZGVsZXRlZGxp bmVzICAgICAgbGliLyAgICAgICAgICAgICAgc3JjLwpNYWtlZmlsZSAgICAgICAgICBkb2Mv ICAgICAgICAgICAgICBtYW4vICAgICAgICAgICAgICB0bXAvClJDUy8gICAgICAgICAgICAg IGRzdC8gICAgICAgICAgICAgIG1ncC8KYXJjLyAgICAgICAgICAgICAgaGF0YWkudGFyICAg ICAgICAgbnNtYWlsLwo= --Multipart_Tue_Sep_29_07:46:36_1998-1--
とはいっても上の例のようにMIME形式でファイルが添付されたメールを見る機会はあまりないはずです. というのは,Windows用のメールソフト(Microsoft Internet ExplorerやOutlook Expressなど)なら MIME形式の添付ファイルの部分は上記のような意味不明な文字列のままではなく, アイコンで表示されるようになっているのが普通だからです (Emacs/cmailではものすごくシンプルで,ファイルの情報を示す1行の情報が表示されるだけです). そして,Windows用のメールソフトの場合,明示的にファイルを取り出す操作(デコード)をしなくても, 添付ファイルを示すアイコンをドラッグ&ドロップすることでファイルを取り出せたり, ダブルクリックあるいは右クリックして開くを選ぶと添付されたファイルのないように応じて, 画像が表示されたり,音声が再生されたり,プログラムが実行されたりするようになっています.
このようにMIME形式でファイルを添付することにより, メールでも画像や音声やプログラムなどのバイナリデータを送受信することできます.
単語 | 読み |
---|---|
MIME | マイム |
ISH | イッシュ |
uuencode | ユーユーエンコード |
Emacs/cmailを使用してMIME添付ファイルの操作をする方法については, Emacs/cmailでのMIME形式添付ファイルの操作方法 をご参照ください.