【PHP】Qdmailの添付ファイル名を半角と全角を混ぜた場合の不具合

By: Robert Agthe

Qdmailを使用してメール送信プログラムを作成中
添付ファイルのところで躓いてしまいました。

Qdmailは添付ファイル名に日本語を使用することができるんですが
半角と全角が混じっている次のようなファイル名の場合
受信したメールに添付されているファイル名が元のものと異なってしまいます。

正しく送信されない例)
元のファイル名 => あああaaa.txt
受信したファイル名 => aaa.txt

元のファイル名 => あああaaaあああaaa.txt
受信したファイル名 => aaaあああaaa.txt

ちなみに次のようなファイル名の場合は問題なく送信されました。

正しく送信される例)
ファイル名 => aaaあああaaaあああaaa.txt

要は、全角文字列の後に半角文字列が来るようなファイル名の場合が該当します。
調べたところ、この不具合は実は、Qdmailの不具合と言うよりは正確にはPHP5の不具合のようです。
詳しくは下記URLを参照してください。

Andante – PHP、Linux環境でbasenameやpathinfoでの全角(日本語等)ファイル名の正しく取得が出来ない

さて、今回の場合ですがQdmailのソースを一部修正しなければなりません。
qdmail.phpの2899行目あたりを修正します。

修正前

修正後

これで、正しいファイル名で添付ファイルが送信されるようになりました。

コメントを書く

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です