Shishimushi

M2 添付ファイルの文字化け

「M2(Opera Mail)における添付ファイルの文字化け問題」について、受信に関しては「すべてのアドレスをUTF-8でエンコードする」のチェックに関わらず、(うちの環境では)いつの間にか発生しなくなっていた。しかし、送信(つまり、日本語名のファイルを M2 で添付送信)に関しては、受信するメールクライアントによってはファイル名が文字化けしてしまう問題が依然として続いているようだ。

告白すると、Web上で「M2 における添付ファイルの文字化け問題」を嘆く記事を見るたびに、僕は受信に関する問題だと早合点し、あまつさえ その記事がコメント可能なブログの場合は「すべてのアドレスをUTF-8でエンコードする云々」という方法を提示していた(例:Nazo-log)。そして、それでも解消されない、あるいはそういう問題ではない等々のレスに首を傾げていたのである。全く迷惑きわまりなく、恥ずかしい限りである。

さて、問題の原因とその対策については、既に方々で言われている通りだが、以下に僕が行った「M2 における添付ファイルの文字化け問題」の実験過程を恥さらしついでに書いておくことにする。

M2 添付ファイル文字化けテスト

次の3つのファイルを添付して適当な件名と本文で自分宛(プロバイダ、Webメール)に送信した。

  1. M2添付ファイル文字化けテスト.doc
  2. M2添付ファイル文字化けテスト.xls
  3. M2添付ファイル文字化けテスト.zip
    1. M2添付ファイル文字化けテスト.doc
    2. M2添付ファイル文字化けテスト.xls

環境は WindowsXP SP2、送信に使ったメールクライアントは M2(Opera 9.10 build8679)、「標準のエンコーディング」は iso-2022-jp で、「全てのアドレスをUTF-8でエンコードする」のチェックの有無が結果に影響することはなかった。また、受信に使ったメールクライアントは単に自分の周りで見かけるもの(Webメールも合わせて14)であって、全てを試したわけではない。

受信メールクライアント .doc .xls .zip 備考
Becky! 2.24.02 ○ ○ ○
Datula 1.51.09 ○ ○ ○
EdMax 3.11 文字化け 文字化け 文字化け ファイル名・拡張子を正しく変更することにより閲覧可。拡張子の推測は容易。
Eudora 7J rev1.0(体験版) 拡張子なし 拡張子なし 拡張子なし ファイル名は件名。拡張子を正しく指定することにより閲覧可。
秀丸メール 4.73 文字化け 文字化け 文字化け ファイル名・拡張子を正しく変更することにより閲覧可。拡張子の推測は容易。
Microsoft Outlook 2000 ATT*.doc ATT*.xls ATT*.dat ファイル名は全てATT*となる。拡張子を正しく変更することにより閲覧可。
Microsoft Outlook Express 6 ATT*.doc ATT*.xls ATT*.dat ファイル名は全てATT*となる。拡張子を正しく変更することにより閲覧可。
Mozilla Thunderbird 1.5.0.9 ○ ○ ○
M2(Opera 9.10 build8679) ○ ○ ○
Shuriken Pro4 /R.2 Vista対応版(体験版) ○ ○ ○
Hotmail attach*.bin attach*.bin attach*.zip ファイルは全てattach*となる(拡張子がないことも)。拡張子を正しく変更することにより閲覧可。
Gmail ○ ○ ○
Yahoo! Mail file.bin file.bin file.bin ファイル名は全てfile.binとなる。拡張子を正しく変更することにより閲覧可。
Opera Web Mail 数字.dat 数字.dat 数字.dat 保存時にファイル名は全てfile.datとなる。拡張子を正しく変更することにより閲覧可。

共通して言えることは、文字化けしたり名前や拡張子が変更になってもファイル自体は壊れていないということだ。これは、M2 の添付ファイルエンコード(Base64)は正しく処理され、それぞれのメールクライアントでもそれをしっかり認識しているということを示す。すると、問題はやはりファイル名の文字化けで、つまりファイル名やファイル形式の伝達あるいは認識の過程で何らかの問題が発生しているのだと思った。

しかし解せないのは、RFC2231形式 に対応しているはずの EdMax と 秀丸メール で文字化けが起こることだ。また、秀丸メール については、M2の「標準のエンコーディング」を iso-2022-jp-1 または UTF-8 にして送信すると、添付ファイルの文字化けは発生しなかった。

他メールクライアント 添付ファイル文字化けテスト

上で扱った受信メールクライアントの中で M2 以外に RFC2231形式 で送信できるのは、Becky!,EdMax,秀丸メール,Thunderbird で、今度はこれらを使って先ほどの M2 のテストと同じように送信してみた。なお、デフォルトのままで送信すれば、以下の4つのメールクライアント全てにおいて文字化けは発生しないことをあらかじめ断っておく。

Becky! 2.24.02

Becky! は添付ファイル送信時に「添付ファイルのエンコード方式」と「日本語ファイル名の変換方式」を選択することができる。

Becky! ファイルの添付

受信メールクライアント .doc .xls .zip 備考
Becky! 2.24.02 ○ ○ ○
Datula 1.51.09 ○ ○ ○
EdMax 3.11 ○ ○ ○
Eudora 7J rev1.0(体験版) ○ ○ ○
秀丸メール 4.73 ○ ○ ○
Microsoft Outlook 2000 ATT*.dat ATT*.dat ATT*.zip ファイル名は全てATT*となる。拡張子を正しく変更することにより閲覧可。
Microsoft Outlook Express 6 ATT*.dat ATT*.dat ATT*.zip ファイル名は全てATT*となる。拡張子を正しく変更することにより閲覧可。
Mozilla Thunderbird 1.5.0.9 ○ ○ ○
M2(Opera 9.10 build8679) ○ ○ ○
Shuriken Pro4 /R.2 Vista対応版(体験版) ○ ○ ○
Hotmail attach*.bin attach*.bin attach*.zip ファイルは全てattach*となる(拡張子がないことも)。拡張子を正しく変更することにより閲覧可。
Gmail ○ ○ ○
Yahoo! Mail file.bin file.bin file.bin ファイルは全てfile.binとなる。拡張子を正しく変更することにより閲覧可。
Opera Web Mail 数字.dat 数字.dat 数字.dat 保存時にファイルは全てfile.datとなる。拡張子を正しく変更することにより閲覧可。

Outlook,Outlook Express,Hotmail,Yahoo! Mail,Opera Web Mail 以外で文字化けが起こることはなかった。また、Outlook,Outlook Express では docファイル と xlsファイル が datファイル として扱われていたり、M2 では datファイルだった zipファイル がファイル名こそ違えどまともに扱われている等、ファイル形式の伝達あるいは認識において若干の違いが見られる。

EdMax 3.11

EdMax は、設定 » メーラー設定 » 送信 の「添付ファイル名はRFC2231でコード化」にチェックすれば良い。

EdMax メーラー設定

受信メールクライアント .doc .xls .zip 備考
Becky! 2.24.02 ○ ○ ○
Datula 1.51.09 ○ ○ ○
EdMax 3.11 ○ ○ ○
Eudora 7J rev1.0(体験版) ○ ○ ○
秀丸メール 4.73 ○ ○ ○
Microsoft Outlook 2000 ATT*.dat ATT*.dat ATT*.dat ファイルは全てATT*.datとなる。拡張子を正しく変更することにより閲覧可。
Microsoft Outlook Express 6 ATT*.dat ATT*.dat ATT*.dat ファイルは全てATT*.datとなる。拡張子を正しく変更することにより閲覧可。
Mozilla Thunderbird 1.5.0.9 ○ ○ ○
M2(Opera 9.10 build8679) ○ ○ ○
Shuriken Pro4 /R.2 Vista対応版(体験版) ○ ○ ○
Hotmail attach*.bin attach*.bin attach*.bin ファイルは全てattach*.binとなる(拡張子がないことも)。拡張子を正しく変更することにより閲覧可。
Gmail ○ ○ ○
Yahoo! Mail file.bin file.bin file.bin ファイルは全てfile.binとなる。拡張子を正しく変更することにより閲覧可。
Opera Web Mail 数字.dat 数字.dat 数字.dat 保存時にファイルは全てfile.datとなる。拡張子を正しく変更することにより閲覧可。

ほぼ Becky! と同じ結果。ただ、Outlook,Outlook Express,Hotmali において zipファイル が認識されなかった。

秀丸メール 4.73

秀丸メール は、設定 » 全般的な設定 » 上級者向け » 送信時のデコード の「ファイル名をRFC2231形式でエンコードする」にチェックすれば良い。なお、オプションとして「Datula方式で」という項目がある。

秀丸メール 全般的な設定

受信メールクライアント .doc .xls .zip 備考
Becky! 2.24.02 ○ ○ ○
Datula 1.51.09 ○ ○ ○
EdMax 3.11 ○ ○ ○
Eudora 7J rev1.0(体験版) ○ ○ ○
秀丸メール 4.73 ○ ○ ○
Microsoft Outlook 2000 ATT*.doc ATT*.xls ATT*.zip (Datula方式で)にチェックを入れるとファイル名も正しく受信した。
Microsoft Outlook Express 6 ATT*.doc ATT*.xls ATT*.zip (Datula方式で)にチェックを入れるとファイル名も正しく受信した。
Mozilla Thunderbird 1.5.0.9 ○ ○ ○
M2(Opera 9.10 build8679) ○ ○ ○
Shuriken Pro4 /R.2 Vista対応版(体験版) ○ ○ ○
Hotmail attach*.bin attach*.bin attach*.bin (Datula方式で)にチェックを入れるとファイル名・拡張子とも正しく受信した。
Gmail ○ ○ ○
Yahoo! Mail file.bin file.bin file.bin (Datula方式で)にチェックを入れるとiso-2022-jp_B...というファイルとして表示された。
Opera Web Mail 数字.dat 数字.dat 数字.dat (Datula方式で)にチェックを入れるとファイル名・拡張子とも正しく受信した。

Outlook,Outlook Express において拡張子を正しく認識した。また「Datula方式で」についてヘルプには、

(Datula方式で)をONにすると、「Content-Type:」ヘッダ中のname=はBエンコードでエンコードし、「Content-Disposition:」ヘッダ中のfilename=はRFC2231形式でエンコードします。こうすると、RFC2231形式に対応してないメールソフトでもかなり高い確率で日本語ファイル名が正しく伝わるようです。

未対応メールソフト情報
RFC2231に対応してないメールソフトとしては、AL-Mailの一部バージョン(V1.11以下)が存在しているようです。2003年10月現在でも、具体的にAL-Mailユーザー様から「添付ファイルのファイル名がおかしくなる」という報告が届いてるそうです。 Datula方式をONにしてもダメだそうです。

とあり、「Datula方式で」をONにすると、上の通り Yahoo! Mail 以外は全て正常に受信できて、それは Datula で普通に添付送信(MNE+Base64)した時と全く同じ結果であった。

Mozilla Thunderbird 1.5.0.9

Thunderbird は、ツール » オプション » 詳細 » 設定エディタ » about:configで mail.strictly_mime.parm_folding の値を2にすれば良い。デフォルトは2

Thunderbird about:config

受信メールクライアント .doc .xls .zip 備考
Becky! 2.24.02 ○ ○ ○
Datula 1.51.09 文字化け.doc 文字化け.xls 文字化け.zip 一応、ファイル形式は認識している様子。
EdMax 3.11 ○ ○ ○
Eudora 7J rev1.0(体験版) 拡張子なし 拡張子なし 拡張子なし ファイル名は件名+文字化け。拡張子を正しく指定することにより閲覧可。
秀丸メール 4.73 ○ ○ ○
Microsoft Outlook 2000 ATT*.doc ATT*.xls ATT*.zip ファイルは全てATT*となる。
Microsoft Outlook Express 6 ATT*.doc ATT*.xls ATT*.zip ファイルは全てATT*となる。
Mozilla Thunderbird 1.5.0.9 ○ ○ ○
M2(Opera 9.10 build8679) ○ ○ ○
Shuriken Pro4 /R.2 Vista対応版(体験版) ○ ○ ○
Hotmail attach*.bin attach*.bin attach*.bin ファイルは全てattach*.binとなる(拡張子がないことも)。拡張子を正しく変更することにより閲覧可。
Gmail ○ ○ ○
Yahoo! Mail file.bin file.bin file.bin ファイルは全てfile.binとなる。拡張子を正しく変更することにより閲覧可。
Opera Web Mail 数字.dat 数字.dat 数字.dat 保存時にファイルは全てfile.datとなる。拡張子を正しく変更することにより閲覧可。

Datula と Eudora 以外は 秀丸メールと同じ結果。

添付ファイル文字化けテストまとめ

送信メールクライアント B D Ed Eu 秀 Ou OE T M S H G Y Op 備考
Becky! 2.24.02 ○ ○ ○ ○ ○ × × ○ ○ ○ × ○ × × Ou,OE,Hにおいてzipファイルであることは認識した。詳細
EdMax 3.11 ○ ○ ○ ○ ○ × × ○ ○ ○ × ○ × × Ou,OE,Hにおいて全てdatファイルとして認識した。詳細
秀丸メール 4.73 ○ ○ ○ ○ ○ × × ○ ○ ○ × ○ × × Ou,OE,Hにおいて拡張子は認識した。詳細
Mozilla Thunderbird 1.5.0.9 ○ × ○ × ○ × × ○ ○ ○ × ○ × × D,Ou,OEにおいて拡張子は認識した。詳細
M2(Opera 9.10 build8679) ○ ○ × × × × × ○ ○ ○ × ○ × × Ou,OEにおいてdoc,xlsファイルであることは認識した。詳細

どれも Gmail 以外のWebメールや Outlook と Outlook Express では難があったが、M2 に比べて文字化けが発生することは少なく、それぞれファイル形式の伝達あるいは認識において若干の違いが見られた。また、Eudora は RFC2231 に対応していないと聞くが、この結果を見る限りではなんとも微妙である。さて、これらの違いはどこから来るのだろうか。

ヘッダ情報

RFC2231形式 で送信した5つのメールクライアントについて、それぞれの添付ファイルヘッダ情報(Content-Type,Content-Disposition)を見てみる。Content-Transfer-Encoding は全て Base64 なので省略。

Becky! 2.24.02

Content-Type: application/octet-stream;
         name*0*=iso-2022-jp''M2%1B%24BE%3AIU%25U%25%21%25%24%25kJ8%1B%28B;
         name*1*=%1B%24B%3Bz2%3D%241%25F%259%25H%1B%28B%2Edoc
Content-Disposition: attachment;
         filename*0*=iso-2022-jp''M2%1B%24BE%3AIU%25U%25%21%25%24%25kJ8%1B%28B;
         filename*1*=%1B%24B%3Bz2%3D%241%25F%259%25H%1B%28B%2Edoc
Content-Type: application/octet-stream;
         name*0*=iso-2022-jp''M2%1B%24BE%3AIU%25U%25%21%25%24%25kJ8%1B%28B;
         name*1*=%1B%24B%3Bz2%3D%241%25F%259%25H%1B%28B%2Exls
Content-Disposition: attachment;
         filename*0*=iso-2022-jp''M2%1B%24BE%3AIU%25U%25%21%25%24%25kJ8%1B%28B;
         filename*1*=%1B%24B%3Bz2%3D%241%25F%259%25H%1B%28B%2Exls
Content-Type: application/x-zip-compressed;
         name*0*=iso-2022-jp''M2%1B%24BE%3AIU%25U%25%21%25%24%25kJ8%1B%28B;
         name*1*=%1B%24B%3Bz2%3D%241%25F%259%25H%1B%28B%2Ezip
Content-Disposition: attachment;
         filename*0*=iso-2022-jp''M2%1B%24BE%3AIU%25U%25%21%25%24%25kJ8%1B%28B;
         filename*1*=%1B%24B%3Bz2%3D%241%25F%259%25H%1B%28B%2Ezip

docファイル と xlsファイル の Content-Type が application/octet-stream(バイナリデータ)。

EdMax 3.11

Content-Type: application/octet-stream
Content-Disposition: attachment;
	filename*0*=iso-2022-jp'ja'M2%1B%24BE%3AIU%25U%25%21%25%24%1B%28B;
	filename*1*=%1B%24B%25kJ8%3Bz2%3D%241%25F%1B%28B;
	filename*2*=%1B%24B%259%25H%1B%28B%2Edoc
Content-Type: application/octet-stream
Content-Disposition: attachment;
	filename*0*=iso-2022-jp'ja'M2%1B%24BE%3AIU%25U%25%21%25%24%1B%28B;
	filename*1*=%1B%24B%25kJ8%3Bz2%3D%241%25F%1B%28B;
	filename*2*=%1B%24B%259%25H%1B%28B%2Exls
Content-Type: application/octet-stream
Content-Disposition: attachment;
         filename*0*=iso-2022-jp'ja'M2%1B%24BE%3AIU%25U%25%21%25%24%1B%28B;
         filename*1*=%1B%24B%25kJ8%3Bz2%3D%241%25F%1B%28B;
         filename*2*=%1B%24B%259%25H%1B%28B%2Ezip

全てのファイルの Content-Type が application/octet-streamでセミコロン( ; )が抜けている。

秀丸メール 4.73

Content-Type: application/msword;
         name*0*=iso-2022-jp''M2%1B%24BE%3AIU%25U%25%21%25%24%25k%1B%28B;
         name*1*=%1B%24BJ8%3Bz2%3D%241%25F%259%25H%1B%28B%2Edoc
Content-Disposition: attachment;
         filename*0*=iso-2022-jp''M2%1B%24BE%3AIU%25U%25%21%25%24%1B%28B;
         filename*1*=%1B%24B%25kJ8%3Bz2%3D%241%25F%259%25H%1B%28B%2Edoc
Content-Type: application/vnd.ms-excel;
         name*0*=iso-2022-jp''M2%1B%24BE%3AIU%25U%25%21%25%24%25k%1B%28B;
         name*1*=%1B%24BJ8%3Bz2%3D%241%25F%259%25H%1B%28B%2Exls
Content-Disposition: attachment;
         filename*0*=iso-2022-jp''M2%1B%24BE%3AIU%25U%25%21%25%24%1B%28B;
         filename*1*=%1B%24B%25kJ8%3Bz2%3D%241%25F%259%25H%1B%28B%2Exls
Content-Type: application/x-zip-compressed;
         name*0*=iso-2022-jp''M2%1B%24BE%3AIU%25U%25%21%25%24%25k%1B%28B;
         name*1*=%1B%24BJ8%3Bz2%3D%241%25F%259%25H%1B%28B%2Ezip
Content-Disposition: attachment;
         filename*0*=iso-2022-jp''M2%1B%24BE%3AIU%25U%25%21%25%24%1B%28B;
         filename*1*=%1B%24B%25kJ8%3Bz2%3D%241%25F%259%25H%1B%28B%2Ezip

Content-Type をそれぞれ指定している。

秀丸メール 4.73(Datula方式で)

Content-Type: application/msword;
         name="=?iso-2022-jp?B?TTIbJEJFOklVJVUlISUkJWtKODt6Mj0kMSVGJTklSBsoQi5kb2M=?="
Content-Disposition: attachment;
         filename*0*=iso-2022-jp''M2%1B%24BE%3AIU%25U%25%21%25%24%1B%28B;
         filename*1*=%1B%24B%25kJ8%3Bz2%3D%241%25F%259%25H%1B%28B%2Edoc
Content-Type: application/vnd.ms-excel;
         name="=?iso-2022-jp?B?TTIbJEJFOklVJVUlISUkJWtKODt6Mj0kMSVGJTklSBsoQi54bHM=?="
Content-Disposition: attachment;
         filename*0*=iso-2022-jp''M2%1B%24BE%3AIU%25U%25%21%25%24%1B%28B;
         filename*1*=%1B%24B%25kJ8%3Bz2%3D%241%25F%259%25H%1B%28B%2Exls
Content-Type: application/x-zip-compressed;
         name="=?iso-2022-jp?B?TTIbJEJFOklVJVUlISUkJWtKODt6Mj0kMSVGJTklSBsoQi56aXA=?="
Content-Disposition: attachment;
         filename*0*=iso-2022-jp''M2%1B%24BE%3AIU%25U%25%21%25%24%1B%28B;
         filename*1*=%1B%24B%25kJ8%3Bz2%3D%241%25F%259%25H%1B%28B%2Ezip

ヘルプにある通り、Content-Type の name 以下が異なっている。ちなみに、Datula で普通に添付送信した際のヘッダ情報は以下。

Content-Type: application/msword;
         name="=?ISO-2022-JP?B?TTIbJEJFOklVJVUlISUkJWtKODt6Mj0kMSVGJTklSBsoQi5kb2M=?="
Content-Disposition: attachment;
         filename*0*=ISO-2022-JP''M2;
         filename*1*=%1B$BE%3AIU%25U%25!%25$%25kJ8%3Bz2%3D$1%25F%259%25H%1B%28B;
         filename*2=.doc

Mozilla Thunderbird 1.5.0.9

Content-Type: application/msword;
         name*0*=ISO-2022-JP''%4D%32%1B%24%42%45%3A%49%55%25%55%25%21%25%24%25%6B;
         name*1*=%4A%38%3B%7A%32%3D%24%31%25%46%25%39%25%48%1B%28%42%2E%64%6F%63
Content-Disposition: inline;
         filename*0*=ISO-2022-JP''%4D%32%1B%24%42%45%3A%49%55%25%55%25%21%25%24%25;
         filename*1*=%6B%4A%38%3B%7A%32%3D%24%31%25%46%25%39%25%48%1B%28%42%2E%64;
         filename*2*=%6F%63
Content-Type: application/vnd.ms-excel;
         name*0*=ISO-2022-JP''%4D%32%1B%24%42%45%3A%49%55%25%55%25%21%25%24%25%6B;
         name*1*=%4A%38%3B%7A%32%3D%24%31%25%46%25%39%25%48%1B%28%42%2E%78%6C%73
Content-Disposition: inline;
         filename*0*=ISO-2022-JP''%4D%32%1B%24%42%45%3A%49%55%25%55%25%21%25%24%25;
         filename*1*=%6B%4A%38%3B%7A%32%3D%24%31%25%46%25%39%25%48%1B%28%42%2E%78;
         filename*2*=%6C%73
Content-Type: application/x-zip-compressed;
         name*0*=ISO-2022-JP''%4D%32%1B%24%42%45%3A%49%55%25%55%25%21%25%24%25%6B;
         name*1*=%4A%38%3B%7A%32%3D%24%31%25%46%25%39%25%48%1B%28%42%2E%7A%69%70
Content-Disposition: inline;
         filename*0*=ISO-2022-JP''%4D%32%1B%24%42%45%3A%49%55%25%55%25%21%25%24%25;
         filename*1*=%6B%4A%38%3B%7A%32%3D%24%31%25%46%25%39%25%48%1B%28%42%2E%7A;
         filename*2*=%69%70

ファイル名が、例えば「M2添付ファイル文字化けテスト.doc」なら、

M2%1B%24BE%3AIU%25U%25%21%25%24%25kJ8%3Bz2%3D%241%25F%259%25H%1B%28B.doc

とならず、

%4D%32%1B%24%42%45%3A%49%55%25%55%25%21%25%24%25%6B%4A%38%3B%7A%32%3D%24%31%25%46%25%39%25%48%1B%28%42%2E%64%6F%63

となっている点と Content-Disposition が inline となっている点以外は 秀丸メール とほぼ同じ。ちなみに attachment に変えても文字化けには影響しない。

M2(Opera 9.10 build8679)

Content-Disposition: attachment;
         filename*0*=utf-8''M2%E6%B7%BB%E4%BB%98%E3%83%95%E3%82;
         filename*1*=%A1%E3%82%A4%E3%83%AB%E6%96%87%E5%AD%97%E5;
         filename*2*=%8C%96%E3%81%91%E3%83%86%E3%82%B9%E3%83%88;
         filename*3*=.doc
Content-Type: application/msword;
         name*0*=utf-8''M2%E6%B7%BB%E4%BB%98%E3%83%95%E3%82;
         name*1*=%A1%E3%82%A4%E3%83%AB%E6%96%87%E5%AD%97%E5;
         name*2*=%8C%96%E3%81%91%E3%83%86%E3%82%B9%E3%83%88;
         name*3*=.doc
Content-Disposition: attachment;
         filename*0*=utf-8''M2%E6%B7%BB%E4%BB%98%E3%83%95%E3%82;
         filename*1*=%A1%E3%82%A4%E3%83%AB%E6%96%87%E5%AD%97%E5;
         filename*2*=%8C%96%E3%81%91%E3%83%86%E3%82%B9%E3%83%88;
         filename*3*=.xls
Content-Type: application/vnd.ms-excel;
         name*0*=utf-8''M2%E6%B7%BB%E4%BB%98%E3%83%95%E3%82;
         name*1*=%A1%E3%82%A4%E3%83%AB%E6%96%87%E5%AD%97%E5;
         name*2*=%8C%96%E3%81%91%E3%83%86%E3%82%B9%E3%83%88;
         name*3*=.xls
Content-Disposition: attachment;
         filename*0*=utf-8''M2%E6%B7%BB%E4%BB%98%E3%83%95%E3%82;
         filename*1*=%A1%E3%82%A4%E3%83%AB%E6%96%87%E5%AD%97%E5;
         filename*2*=%8C%96%E3%81%91%E3%83%86%E3%82%B9%E3%83%88;
         filename*3*=.zip
Content-Type: application/zip;
         name*0*=utf-8''M2%E6%B7%BB%E4%BB%98%E3%83%95%E3%82;
         name*1*=%A1%E3%82%A4%E3%83%AB%E6%96%87%E5%AD%97%E5;
         name*2*=%8C%96%E3%81%91%E3%83%86%E3%82%B9%E3%83%88;
         name*3*=.zip

他のメールクライアントと異なる点は zipファイル の Content-Type が application/zip である点と、name*0*= , filename*0*= 以下のファイル名が UTF-8 でエンコードされている点。

ヘッダ情報まとめ

  1. Becky! は docファイル と xlsファイル の Content-Type が application/octet-stream であった。詳細
  2. EdMax は 全てのファイルの Content-Type が application/octet-stream であった。詳細
  3. 秀丸メール(Datula方式で)は Content-Type を RFC2047、Content-Disposition を RFC2231 に準じてエンコードしている。詳細
    1. これが RFC2231 に準拠したものならば、Datula も RFC2231形式 で送信できるメールクライアントということになる。
  4. Thunderbird はエンコード結果が他と若干異なっている。詳細
  5. M2 は zipファイル の Content-Type が application/zip で、ファイル名は全て UTF-8 でエンコードされている。詳細

どうやら、M2 がファイル名を UTF-8 でエンコードしているために、いくつかのメールクライアントでは文字化けが起こっているようだ。また、Content-Type を細かく指定すれば、Outlook と Outlook Express,Hotmail でも一応ファイル形式は認識するのかもしれない。

原因と対策

以上のこと(添付ファイル文字化けテスト、ヘッダ情報)から、「M2 における添付ファイルの文字化け問題」の原因は、

  1. 受信するメールクライアントが RFC2231形式 に未対応なため。
  2. M2 がファイル名を UTF-8 でエンコードするため。
  3. 受信するメールクライアントが UTF-8 をデコードできないため。

であろうことが推測される。「標準のエンコーディング」に関わらずファイル名を UTF-8 でエンコードする M2 の処理が妥当なものなのかは知らないし、UTF-8 をデコードできないのがどういった理由なのかはわからないが、ともかく対策としては「日本語名のファイルは送信しない」ということが一番である。もしどうしても日本語名のファイルを送信したければ相手先のメールクライアントを確認し、対応している(文字化けしない)ようであっても、念のためファイル名とファイルサイズを本文に記載する等の送信者側の配慮が必要だ。

雑感と要望

M2 が RFC2231 に対応したのは 7.20 Beta 7 かららしい(2003年)。

以来、あちこちでこの「M2 における添付ファイルの文字化け問題」に関する質問や要望、意見が飛び交っている。

仮に M2 が RFC2231 に準拠した形でメール送信を行っていたとしても、現在それを正しく受信しないメールクライアントがありそのユーザーが多いことは事実だ。だから、対策としてはもう1つ「M2 を使わずにローカルルールに身をゆだねる」という方法もある。しかし、Opera がローカルルールに合わせる必要はないと思うので、僕は次の1点を要望する。

重複になるが、実際のところ Content-Type の nameパラメータ、Content-Disposition の filenameパラメータの UTF-8 エンコーディングが妥当なものなのか、またそれをデコードできないのにはどういった理由があるのかがわからないのだ。だから、この要望は全くの見当違いなのかもしれず、もしそのことに詳しい方やそこら辺が書かれたドキュメントをご存じの方は是非それを教えて欲しいのであるが、それはさておき、これは、EdMax や Eudora,秀丸メール において添付ファイルが正しく受信できない原因を「ファイル名を UTF-8 でエンコードしているため」と仮定した上での要望である。

どうしても日本語名のファイルを添付送信しなければならなくなって、かつファイル名を変更することができなくて、更に相手先が RFC2231 未対応のメールクライアントだったらどうするのかというと、僕は Becky! でMINE送信することにする。そういうケースはうちの環境では非常に希ではあるが。

参考

おまけ

Gmail

Content-Type: application/msword; 
         name="=?ISO-2022-JP?B?TTIbJEJFOklVJVUlISUkJWtKOBsoQg==?=
         =?ISO-2022-JP?B?GyRCO3oyPSQxJUYlOSVIGyhCLmRvYw==?="
Content-Transfer-Encoding: base64
X-Attachment-Id: f_eyjpb3cz
Content-Disposition: attachment;
         filename="=?ISO-2022-JP?B?TTIbJEJFOklVJVUlISUkJWtKOBsoQg==?=
         =?ISO-2022-JP?B?GyRCO3oyPSQxJUYlOSVIGyhCLmRvYw==?="
Content-Type: application/vnd.ms-excel; 
         name="=?ISO-2022-JP?B?TTIbJEJFOklVJVUlISUkJWtKOBsoQg==?=
         =?ISO-2022-JP?B?GyRCO3oyPSQxJUYlOSVIGyhCLnhscw==?="
Content-Transfer-Encoding: base64
X-Attachment-Id: f_eyjpbfr6
Content-Disposition: attachment;
         filename="=?ISO-2022-JP?B?TTIbJEJFOklVJVUlISUkJWtKOBsoQg==?=
         =?ISO-2022-JP?B?GyRCO3oyPSQxJUYlOSVIGyhCLnhscw==?="
Content-Type: application/zip; 
         name="=?ISO-2022-JP?B?TTIbJEJFOklVJVUlISUkJWtKOBsoQg==?=
         =?ISO-2022-JP?B?GyRCO3oyPSQxJUYlOSVIGyhCLnppcA==?="
Content-Transfer-Encoding: base64
X-Attachment-Id: f_eyjpbjyi
Content-Disposition: attachment;
         filename="=?ISO-2022-JP?B?TTIbJEJFOklVJVUlISUkJWtKOBsoQg==?=
         =?ISO-2022-JP?B?GyRCO3oyPSQxJUYlOSVIGyhCLnppcA==?="

Apple Mail (2.624)

Content-Transfer-Encoding: base64
Content-Type: application/msword;
         x-mac-type=5744424E;
         x-unix-mode=0644;
         x-mac-creator=4D535744;
         name="M2添付ファイル文字化けテスト.doc"
Content-Disposition: attachment;
         filename*=ISO-2022-JP''M2%1B%24BE%3AIU%25U%25%21%25%24%25kJ8%3Bz2%3D%241%25F%259%25H%1B%28B.doc
Content-Transfer-Encoding: base64
Content-Type: application/vnd.ms-excel;
         x-mac-type=584C5320;
         x-unix-mode=0644;
         x-mac-creator=69634578;
         name="M2添付ファイル文字化けテスト.xls"
Content-Disposition: attachment;
         filename*=ISO-2022-JP''M2%1B%24BE%3AIU%25U%25%21%25%24%25kJ8%3Bz2%3D%241%25F%259%25H%1B%28B.xls
Content-Transfer-Encoding: base64
Content-Type: application/zip;
         x-mac-type=5A495020;
         x-unix-mode=0644;
         x-mac-creator=53495478;
         name="M2添付ファイル文字化けテスト.zip"
Content-Disposition: attachment;
         filename*=ISO-2022-JP''M2%1B%24BE%3AIU%25U%25%21%25%24%25kJ8%3Bz2%3D%241%25F%259%25H%1B%28B.zip

投稿者:芦塚 | 投稿日時: 2007年 2月24日(土) 22:22

 トップページ 次へ