おじさんエンジニアの日記

おじさんエンジニアがWeb関連の技術、ガンプラのことを書くブログ

日本語ファイルの添付メールを送信

PEAR::Mail_MIMEを使って日本語ファイルの添付メールを送信しようとして、
ファイル名の文字化けにはまったのでメモ

$mime->addAttachment(ファイルパス,"application/octet-stream");

これで試したらGmailで文字化けした。

ファイル名をSJISに変換して同様の処理をしたら、
GmailはOKになったが、今度はthunderbirdでファイル名が空で受信した。

以下の方法で試したら、両方ともOKになった。

$mime->addAttachment(ファイルパス,"application/octet-stream", mb_convert_encoding($file_name,'ISO-2022-JP','UTF-8') );

あと、ファイルは日本語ではなく、[DBのID].zipになるようにした。
日本語ファイル名は、以下のURLなどにあるようにbasename関数の問題でうまく取れないため、

NexTech » PHPのpathinfo、basename関数で日本語ファイル名がうまく取得できない。