▽ UTF-8ブラウザ別対応状況 ※このホームページはUTF-8で記述されています。

8bitメールは問題ないのか?


先ほどのページでは、主要なメールソフト(Windows、Mac)でのUTF-8なメールの対応状況を調べてみました。MacOS9.2.2など古い環境で、いわゆる機種依存文字の表示に問題は見受けられたものの、全くUTF-8に対応していないメールソフトというのは、調査した限りでは皆無でした。

しかしながら、皆さんの中には、メールを送信する際はISO-2022-JPを使うという「戒め」の根拠として、「Shift_JISやEUC-JPなどの文字コードは8bitであり、7bitしか通さない仕様のメールサーバ(Mail Transfer AgentでMTAと略されることが多いです。)を通過した場合、最上位ビットの8bit目が落とされて文字化けメールが発生することがある」ということを聞いたことのある方もいらっしゃると思います。8bit目が欠落したり、8bitだからとバイナリーファイル扱いで、Quoted-Printableで勝手にエンコードしてしまうMTAの存在も指摘されてきました。

実際、私がUTF-8メールの送受信テスト(WindowsXP+Outlook Express6.0のデフォルト設定で実施。)を行っている場合、メールのヘッダーには「Content-Transfer-Encoding:8bit」と付加されます。つまり、本文は生のUTF-8がそのまま流れます。テストした限りでは、"幸い"、8bit目が欠落するケースには遭遇しませんでしたが、テストメールのあて先のメールアドレスによっては、「X-MIME-Autoconverted: from quoted-printable to 8bit by **.hogehohe.com ****」というヘッダーをつけているものもありました。これは「quoted-printableから8bitにエンコードしなおしました。」という意味ですが、Outlook Expressの場合、8bitで送られているのは間違いありませんので、逆に言えば、8bit本文をquoted-printableエンコードしたMTA・Aが存在し、さらにMTA・Bがquoted-printableから8bitに戻していると考えられます。

このような可能性を指摘しているサイトの一例を挙げてみます。

● ロシア語電子メールの受信
http://www.slavweb.com/jp/Ruccify/e-mail.html#1

● 中国語の電子メールのむずかしさ
http://hyena.human.niigata-u.ac.jp/files/cn_mac4.html#mail

● Eメールをスペイン語で
http://member.nifty.ne.jp/torua/spanish/chpt4.html

特に、最後に紹介したスペイン語に関するサイトによると、かなり昔の話になりますが、98年10月までは@niftyでも、JISコード(ISO-2022-JP)以外のメールは認められていなかったようですね。これは、今ではほとんど考えられない仕様ではあると思いますけれど、それでも8bit目をそぎ落とすMTAは間違いなく実在するようです。

私がテストした限りでは、”たまたま”成功しましたが、確かに8bitメールをサポートしていないMTAを通過した場合は厄介です。Windows版Outlook Expressでは、UTF-8のメールを「Content-Transfer-Encoding: 8bit」でそのまま送りますから、こうして送信されたUTF-8メールはお陀仏でしょう。

そこで代替案です。

● 代替案1:UTF-7で送信する

どうしても8bitで送信することに抵抗があるならば、7bitで送るために「UTF-7」を使ってみるしかないかもしれません。UTF-7は、RFC2152のサブタイトルにありますように、「A Mail-Safe Transformation Format of Unicode」(メール送信の際に安全な形態のユニコード)と言えるかもしれません。

しかしながら、UTF-7でのメールへの対応状況はUTF-8への対応状況よりもシビアなものがあります。UTF-8に対応していない主要ソフトは、こちらのページで調べた限りではありませんでしたが、UTF-7に対応していないメールソフトの存在を考えると、どちらがbetterかよく分からないとも言えます。例えば、UTF-7への対応状況を調べたこちらのページを見てもらえれば分かりますが、UTF-8はサポートしているApple Mail(MacOS10.3.X。Panther付属)もUTF-7をサポートしていないようです。

● 代替案2:本文もMIMEエンコードする

UTF-8メール送信時のエンコード方式 (テスト結果)
OSメールソフトContent-Transfer-Encoding
(デフォルト設定での送信時)
送信方法
解説ページ
WindowsXPOutlook Express6.0 SP1
(6.00.2800.1123)
8bit
 ただし、これはデフォルト設定での話であり、Outlook Expressでも本文をMIMEエンコードさせることが可能です。Base64もしくはQuoted-Printableでエンコードさせる設定方法についてはこちらを参照してください。
詳細
Outlook2002base64詳細
Becky! ver.2.08.018bit
 設定により、MIMEエンコードも可能。メニューの「ツール」→「全般的な設定」→「言語・フォント」→「言語からUTF-8を選択」します。ここでエンコーディングを8bitではなく、「Base64」もしくは「Quoted-Printable」を選択してください。

(また、私が試した限りでは、日韓混合文の送信は不可能でした。)

--
鶴亀メール ver.3.528bit
(本文のMIMEエンコーディング方法の設定はver3.52現在は、できません。)
'04年5月7日追記  ver.3.55β6から、「X-TuruKame-Encode: base64」と書いてメールを送信すると、本文もbase64エンコードして送信できるようになりました。
--
Netscape7.02 メール8bit
 ただし、設定により、本文もQuoted-Printableエンコードさせることが可能。メニューの「編集」→「設定」→「Mail & Newsgroup」→「作成」で、「8bit文字を含む文字に関しては・・・」にチェックを入れます。)
--
Netscape4.75 Messenger8bit
 メニューの「編集」→「設定」→「メッセージ」で「8bit文字を使用したメッセージの送信」で「"Qエンコード"MIMEエンコーディングを使用」にチェックすれば、Quoted-Printableで送信可能です。)
--
Opera7.23 M28bit
 ただし、Operaの場合、日本語だけのJISメールの場合も、「Content-Type: text/plain; format=flowed; charset=iso-2022-jp」+「Content-Transfer-Encoding: 8bit」で送信してしまっています。実際には、ISO-2022-JPでエンコードされていますし、7bitなのですが、ヘッダーだけ、仕様により8bitとつけています。このあたりの事情は、こちらを参照してください。)
--
WindowsMEOutlook Express5.5
(5.50.4807.1700)
8bit
 ただし、これはデフォルト設定での話であり、Outlook Expressでも本文をMIMEエンコードさせることが可能です。Base64もしくはQuoted-Printableでエンコードさせる設定方法についてはこちらを参照してください。
--
Outlook2000quoted-printable--
Netscape6.01 メール8bit
 設定により、Quoted-Printableでも送信可能。)
--
Netscape Messenger
(Netscape4.6付属)
8bit
 設定により、Quoted-Printableでも送信可能。)
--
Opera7.23 M28bit
 ただし、Operaの場合、日本語だけのJISメールの場合も、「Content-Type: text/plain; format=flowed; charset=iso-2022-jp」+「Content-Transfer-Encoding: 8bit」で送信してしまっています。)
--
Windows98Outlook Express5.5
(5.50.4522.1200)
8bit
 ただし、これはデフォルト設定での話であり、Outlook Expressでも本文をMIMEエンコードさせることが可能です。Base64もしくはQuoted-Printableでエンコードさせる設定方法についてはこちらを参照してください。
--
Netscape6.01 メール8bit
 設定により、Quoted-Printableでも送信可能。)
--
Netscape Messenger
(Netscape4.6付属)
8bit   ×文字化け発生
(「Content-Type: text/plain; charset=UTF-8」とヘッダーはつけていますが、実際には、日本語部分はISO-2022-JPで送信するため、多くのメールソフトで文字化けします。つまり日韓混合文では、韓国語のみUTF-8でエンコードされ、日本語はISO-2022-JPのままという訳の分からないメールになります。また日本語onlyメールでも、ISO-2022-JPでエンコードしておきながら、ヘッダーにはUTF-8と機械的につけるため、文字化けします。)
--
Opera7.23 M28bit
 ただし、Operaの場合、日本語だけのJISメールの場合も、「Content-Type: text/plain; format=flowed; charset=iso-2022-jp」+「Content-Transfer-Encoding: 8bit」で送信してしまっています。実際には、ISO-2022-JPでエンコードされていますし、7bitなのですが、ヘッダーだけ、仕様により8bitとつけています。このあたりの事情は、こちらを参照してください。)
--
MacOS10.3.XApple Mailbase64詳細
Netscape7.02 メール8bit
 設定により、Quoted-Printableエンコードも可能。メニューの左端の「Netscape」→「環境設定」→「Mail&Newsgroup」→「作成」で、「8ビット文字を含むメッセージに関しては、・・・」にチェックを入れます。)
--
MacOS9.2.2Outlook Express5.0quoted-printable詳細
Netscape6.1 メール8bit
 設定により、Quoted-Printableエンコードも可能。メニューの「編集」→「設定」→「メールとニュースグループ」→「メッセージの作成」で、「8ビット文字を含むメッセージに関しては、・・・」にチェックを入れます。)
--
Netscape Messenger4.78bit
 「Content-Type: text/plain; charset=UTF-8; x-mac-type="54455854"; x-mac-creator="4D4F5353"」なる、かなり変わったヘッダー。「x-」で始まるヘッダーは独自に追加可能ということらしいですが、上位ネットスケープ系メーラーでは見られないことから、この独自ヘッダーは廃止されたのでしょうね。)

 設定により、Quoted-Printableエンコードも可能。)

--

デフォルト設定のままだと、本文を8bitのまま送信するメールソフトも多いのですが、そうでないものもあります。例えば、MS Outlook2002であれば、UTF-8のメールを送信する場合、「Content-Transfer-Encoding:8bit」ではなく、「Content-Transfer-Encoding:base64」として、メールのサブジェクト(件名)だけでなく、メール本文までエンコードしてしています(詳細はこちらを参照してください。)。Outlook2002の前バージョンになります「Outlook2000」では「quoted-prinatble」でした。(ということは、マイクロソフトは何らかの理由でエンコード方式を変更したことになります。)

また、Macでも、UTF-8のメールを送信する場合、OS10.3.X(Panther)付属のApple Mailの場合はbase64エンコード、Classic環境におけるOutlook Express5.0ではquoted-printableエンコードを施しています(上記表も参照してください)。

さらに、上の一覧表を見ていただければ分かりますように、ほとんどのメールソフトで、デフォルトの設定を少し触れば、本文をエンコードさせて送信させる設定にすることが可能です。Windows版Outlook Expressやネットスケープ系メールソフトはデフォルトの設定ではUTF-8のメール送信時は、生の8bitでの送信になり、本文はエンコードしてくれませんが、比較的簡単な設定でMIMEエンコードさせるようにすることが可能です。

このようにして本文までエンコードしてしまえば、8bitを通さないMTAの問題は回避できるかもしれません。

ただし、繰り返しになりますが、今度は、メール本文までエンコードされていることを想定していないMUA(メールソフト)の方で問題が発生するかもしれませんが、テストした限りでは、そのようなソフトは見つかりませんでした(テストしたメールソフトは上の表を参照してください。)。

Windows版Outlook ExpressでUTF-8メールを作成すると、8bitのまま送信してしまう点を問題にするなら、上記のようにUTF-7を採用するか、もしくは他のメールソフトを使って本文もMIMEエンコードされるようにする、もしくはOutlook Expressの設定を見直すのいずれかで対処可能という結論になります。

結論  結局は、MUAなりMTAがをサポート(実装)しているかしていないかの話であり(8bitメールのリレーをMTAがサポートしているか、あるいは、本文もMIMEエンコードされているメールの表示をMTAがサポートしているか)、いずれの側も完全にはサポートされていない段階では、そのメールを出す人、あるいは受け取る人の「自己責任」で行う(or 行わない。または、メールソフトを使い分ける。)を決断すれば良い話であり、基本的には、他人がその良し悪しを決めるようなテーマではないと私は思います。

この手の話は、こちらのbecky!のスレッド([becky-ml:19365] 半角カタカナを使いたいとき)でもありますが、形而上学的な議論に発展しやすい傾向があるようですが、実務的な観点での見方も必要であろうと思います。

もちろん、ヘッダーをMIMEエンコードしないで送信するなどの"無茶"は、決して許されるものではないとは思っています。これは、下記の事例のようにMUAを破壊させることもありえますから。

● anetから誤配メール……個人情報付き
http://slashdot.jp/security/03/02/28/1048239.shtml?topic=74

どの方式でも一長一短があり、一概に、こうすべきであるとか、こうしなければならないと断ぜられる問題でもないように思います。少なくとも、今回の送信テストで、UTF-8のメールを送信できないメールソフトは、調査した限りではWindows98+Netscape Messenger4.6の環境だけでした。他のメールソフトでは、エンコード方法にこそ差はあれ、問題なく送信できました。また、本文をエンコードしているメールを受信して、正しく表示できないメールソフトは、上の一覧のメールソフトの中には一つも存在しませんでした。




【広告】 PDF保存対策「PDF No Save」    【広告】 自宅でエステ・ソワンソニック    【広告】 禁煙草

【広告】 ターボセルでセルライト対策    【広告】 .htaccess実践活用術    【広告】 書籍・写真集をお探しなら・・・