Mail_mimeクラスを使って、電子メールの添付ファイルを実装しました。
添付ファイルのファイル名が長い場合に不具合が起こって困っております。
どなたか解決策を知っている方がいらっしゃれば、教えていただけたらと思います。
現象
長い日本語名のファイルを添付して送信すると、添付ファイルの名称が文字化けした形になる。
5-10文字程度なら、文字化けしません。
また、送信したファイルの内容に関しては、拡張子などファイル名を正しく設定しなおせば、正常に開くことができます。
考察
受信したファイルのMIME情報を見てみました。
●文字化けするパターン
Content-Type: application/octet-stream;
name*0*=US-ASCII''%3D%3FISO-2022-JP%3FB%3FGyRCOXE6XSU3JXMlXSU4JSYlYDlxOl0;
name*1*=lNyVzJV0lOCUmJWA5cTpdGyhC%3F%3D%0D%0A%20%3D%3FISO-2022-JP%3FB%3FL;
name*2*=nBkZg%3D%3D%3F%3D
〇文字化けしないパターン
Content-Type: application/pdf;
name="=?ISO-2022-JP?B?GyRCOXE6XSU3JXMlXSU4JSYlYBsoQjIwMTEgGyRCIVZHWSQsJHMkThsoQg==?=
=?ISO-2022-JP?B?GyRCPTgzWEUqPCNORSROOkdBMEB+GyhCIBskQiFdR1kkLCRzJE5LUBsoQg==?=
=?ISO-2022-JP?B?GyRCTEckckxcO1gkNyRGIV0hVxsoQi5wZGY=?="
文字化けしないパターンはメールソフトで長い名前のファイルを添付して送った場合です。
どうも、MIMEの一行の長さを越えた場合にヘッダ情報を複数行にする処理が走っているようですが、一般のメールソフトではそれがなさそうです。
もしかすると、文字コードの変換の仕方が悪くてこのようになっているのかもしれませんが、短いファイル名だとうまくいきます。
ちなみに、UTF-8からISO-2022-JPへ変換するようにしています。
Mail_mime::addAttachmentの引数で、このあたりを制御することが出来ないようです。
何かお気づきの点がありましたら、ご指摘いただけたらと思います。
宜しくお願いします。
« 最終編集者 yocco 日時 2011 年 10 月 20 日(木) 20:10. »