サポート » プラグイン » 日本語ファイル名を添付すると受信メールの添付ファイル名がおかしい

  • 添付ファイルに日本語ファイル名(ほげほげ.pdf)を添付し送信すると、受信したメールの添付ファイルの名前が「pdf」となって受信されます。

    半角英数字のファイル名を添付すると、受信メールのファイル名は正常に受信されます。

    添付ファイル名の2バイト文字は駄目なのでしょうか?

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • モデレーター Takayuki Miyoshi

    (@takayukister)

    Contact Form 7 プラグインに関する質問ですね。(ぱっと見てもわかりにくいので、もし次回質問されることがありましたらプラグインの名前もスレッドのタイトルに含めるようお願いします)

    Contact Form 7 側では添付ファイル名のマルチバイト文字を変換・除去するような処理は行なっていませんので、問題の挙動は Contact Form 7 以外の層で行なわれています。

    自分の環境で試してみたところ、”ほげほげ.pdf” は “69e285bae22889ad148c8e81dfeaabdd.pdf” として送られてきました。”69e285bae22889ad148c8e81dfeaabdd” は “ほげほげ” の MD5 ハッシュ値のようです。ざっくりとソースを眺めてみた限りでは、この MD5 変換処理は wp-includes/class-phpmailer.php 内で行なわれているようです。

    何が言いたいかというと、添付ファイル名にマルチバイト文字が含まれていても実害はありませんが、気になるなら含まない方がいいでしょう。

    “ほげほげ.pdf” が “pdf” に変換されることはまずありえないと思います。何か他のプラグインが干渉していないか、別のメールクライアントで開いたら違って見えないか、など、もう一度確認してみてください。

    トピック投稿者 Takashi Hosoya

    (@tkc49)

    Takayuki Miyoshiさん、回答ありがとうございます。

    >Contact Form 7 プラグインに関する質問ですね。(ぱっと見てもわかりにくいので、もし次回質問されることがありましたらプラグインの名前もスレッドのタイトルに含めるようお願いします)

    失礼しました^^;
    次回から、そうさせて頂きます。

    アドバイスの通りに違うメーラーやプラグイン関係を見直してみました。
    「WP Multibyte Patch」がOFFだったのが原因だったみたいです。
    有効化にしたところ、Takayuki Miyoshiさんと同じように「69e285bae22889ad148c8e81dfeaabdd.pdf」と送信されてきました。

    でも、これでは・・・ファイル名が読めないですね^^;
    1歩前進しましたが、これはこれで困りました・・・。

    同じ問題なのですが、「WP Multibyte Patch」の
    wp-multibyte-patch.php の266行目
    $name = ($name == $name_enc) ? $name . $ext : md5($name) . $ext;
    によってファイル名がサニタイズ(md5)されています。
    しかしファイル名は日本語ならそのままで保存したいと思います。

    $name = ($name == $name_enc) ? $name . $ext : urlencode($name) . $ext;

    とかすると、エンコードされたファイル名になって見苦しくはありますが
    ダウンロードするときは元のファイル名になります。
    それは次善策ではあるのですが、他に方法というのはあるのでしょうか。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「日本語ファイル名を添付すると受信メールの添付ファイル名がおかしい」には新たに返信することはできません。