2H.3 日本語とMIME
日本語でメール送信する場合、以下の注意が必要です。
- ボディ部のテキストデータは7ビットで格納しなければなりません。
- ヘッダー部に日本語を使用する場合は、RFC2047 に従いヘッダー独自のエンコードをしなければなりません。
ボティ部の日本語フォーマット
メールのボティ部に日本語を使用する場合は、以下のMIME関連のヘッダーフィールドが必要になります。
- Content-Type フィールド ---------------- 日本語の文字コード
- Content-Transfer-Encoding フィールド --- エンコード方法
良く使用される日本語の文字コードには以下のものがあります。
- シフトJIS ( Shift_JIS )
- EUC ( EUC-JP )
- ISO-2022-JP
この中で7ビットの日本語コードは ISO-2022-JP だけです。 ISO-2022-JP は一般にJISコードと呼ばれる ISO-2022 のサブセットですが、いわゆる半角カナが定義されていません。 従ってISO-2022-JPでエンコードした場合、半角カナは送信できません。 このような場合は半角カナを漢字に変換して送信するなどの工夫が必要になります。
内 容:こんにちは ご機嫌いかがですか?
Return-Path: <y2sunlight@sample.ne.jp> (中略) Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit ^[$B$3$s$K$A$O^[(B ^[$B$45!7y$$$+$,$G$9$+!)^[(B
半角カナや機種依存文字を含んだテキストなど、テキストを正確に送信したい場合は、 オリジナルのコード系を使用し Base64 に変換してから送信します。 この方法はテキストファイルをバイナリファイル扱いして送信する添付ファイルの場合と同じ方法です。
内 容:こんにちは ご機嫌いかがですか?
Return-Path: <y2sunlight@sample.ne.jp> (中略) MIME-Version: 1.0 Content-Type: text/plain; charset=Shift_JIS Content-Transfer-Encoding: base64 ^lnuVtjENCpZ7lbYyDQqWe5W2Mw==
ヘッダー部の日本語フォーマット
RFC2047ではメールヘッダーに日本語などの非7ビット文字を使用する場合の規定があります。 この規定はメールヘッダーのみの規定です。例えば、メールの件名に日本語を使用する場合は、以下のようにします。
Subject: =?ISO-2022-JP?B?GyRCJDMkcyRLJEEkTxsoQg==?=
- RFC2047によるエンコード形式
- =?{ Chaeset }?{ Encoding }?{ Text }?=
| パート | 説明 |
|---|---|
| { Chaeset } | 文字コード |
| { Encoding } | エンコード方法(B:Base64形式 / Q:Quoted Printable形式 ) |
| { Text } | エンコードした文字列 |
エンコードした文字列が複数行に渡る場合は、 他のフィールドと同様に、継続行を空白か水平タブで始めます。 そして、各行は =? と ?= で括ります。
Subject: =?iso-2022-jp?B?GyRCJE8kOCRhJF4kNyRGJE8kOCRhJF4kNyRGJE8kOCRhJF4bKEI=?=
=?iso-2022-jp?B?GyRCJDckRiRPJDgkYSReJDckRhsoQg==?=
備考: メールアドレスの形式
メールヘッダーに現れるメールアドレスの形式には幾つかのものがあります。
- user@domain
- phrase <user@domain>
- "phrase" <user@domain>
- user@domain (comment)
メールアドレスの中のコメントには日本語が含まれる場合があります。 このような場合、上の fhrase または comment の部分が RFC2047 に基づいてエンコードされます。
To: =?ISO-2022-JP?B?GyRCQXc/LkBoGyhC?= <info@y2sunlight.com>
注意: 添付ファイル名のエンコード形式
RFC2047 には Content-Disposition フィールドの filename パラメータで指定される添付ファイル名に対する規定がありません。 実際のメーラの多くは、添付ファイル名を RFC2047 に基づいてエンコードしていますが、 これは RFC2047 に違反しています。 filenameパラメータに関する規定は RFC2231 にあります。今後は RFC2231 に基づく方式が主流になると予測されます。
