サポート » プラグイン » ContactForm7 & MobileEye で携帯からメールフォームに入力するとメールが文

  • 諸般の事情によりPHP5のサーバーに移行することができずPHP4のサーバーで動かしています。
    したがってktai StyleではなくPHP4でも動くMobileEye+を使っています。

    PCからContactForm7で作成したメールフォーム画面に入力して送信したメールは文字化けしません。
    携帯からWordpressの記事のコメント欄に入力しても文字化けしません。
    しかし携帯からContactForm7のメールフォーム画面に入力して送信したメールは文字化けします。
    文字化けするのは入力した日本語です。半角英数文字は文字化けしません。
    (例 お名前[text text-123] とした場合「お名前」は文字化けしませんが[text text-123]に入力した日本語は文字化けします。)

    環境は下記のようになっています。
    WordPress 2.9.2
    Mobile Eye+バージョン 1.3.0-pl2(パッチ適用済)
    Contact Form7 バージョン 2.3.1
    Outlook2003(メールを受信)

    どなたかお解りになる方がいらっしゃいましたら
    ご教授していただけないでしょうか?
    よろしくお願いいたします。

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

    (@takayukister)

    PHP 自体の設定に間違いがありそうです。phpinfo() の出力表示をチェックして mbstring まわりの設定が正しく行われていることを確認してください。

    (例 お名前[text text-123] とした場合「お名前」は文字化けしませんが[text text-123]に入力した日本語は文字化けします。)

    この状況から推測すると mbstring.http_input に関係がありそうな気がします。

    上の回答がよく理解できない場合はサーバー管理者またはサーバーのサポート窓口に相談してください。

    あと、Outlook はそれ自体に問題があるので検証にはほかのメーラーを使った方が間違いが少ないと思いますよ。

    モデレーター Takayuki Miyoshi

    (@takayukister)

    それと、たとえ mbstring の設定が全部正しいとしても、UTF-8 のメール本文に携帯からの Shift-JIS のフォーム入力文をそのまま取り込んだりした場合には当然文字化けしますよね。このケースの場合には何かしらのエンコーディングを揃える処理を加える必要があると思います。

    Mobile Eye+ の仕様をよく知らないので外してるかもしれませんが、ひとつの可能性として。

    モデレーター IKEDA Yuriko

    (@lilyfan)

    Mobile Eye+ と Contact Form7 の併用の場合は、何か特殊な方法で Shift_JIS → UTF-8 の変換処理を追加しないと *確実に* 文字化けします。他の問い合わせフォームプラグインでも同様です。

    Ktai Style + Contact Form 7 の組み合わせの場合のみ、Ktai Style 側で文字コード変換処理が自動でされるようになっているので文字化けが避けられるのです。それ以外の場合は文字化けして当然と考えてください。

    「諸般の事情」がよく分かりませんが、PHP4 はサポートが終了したプラットフォームですので、使い続けるのは危険です (具体的な脆弱性のリスト)。

    PHP4 を継続して使うことが許されるのは、特注のウェブアプリケーションで PHP5 対応するコストがかけられないとか、そういう場合に限られます。WordPress 自体はすでに PHP5 対応しているわけですから、万難を排して PHP5 対応のサーバーに移るべきです。

    トピック投稿者 takuzy

    (@takuzy)

    ご回答ありがとうございます。

    Takayuki Miyoshiさん、IKEDA Yurikoさん
    回答ありがとうございました。
    Takayuki Miyoshiさんからいただいた回答

    この状況から推測すると mbstring.http_input に関係がありそうな気がします。

    をヒントに調べたところ.htaccessに下記を追記することで解決しました。

    <IfModule mod_php4.c>
    php_flag output_buffering Off
    php_value output_handler none
    php_value default_charset UTF-8
    php_value mbstring.language japanese
    php_flag mbstring.encoding_translation On
    php_value mbstring.http_input auto
    php_value mbstring.http_output UTF-8
    php_value mbstring.internal_encoding UTF-8
    php_value mbstring.substitute_character none
    </IfModule>

    大変助かりました。
    ありがとうございました。

    モデレーター Seisuke Kuraishi

    (@tenpura)

    mbstring.encoding_translation On という設定は、プログラム側に存在するエンコーディング検出変換ロジックとコンフリクトを起こす可能性があるため、限られた環境でそのリスクを理解したうえで利用するものと考えてください。
    特別な理由がない限りこの値は Off にしておくことをおすすめします。

    トピック投稿者 takuzy

    (@takuzy)

    tenpuraさん。回答ありがとうございます。
    ご指摘いただいた.htaccessのmbstring.encoding_translation Onの記述ですが
    On → Offにしてみたところ文字化けが再現しました。
    (携帯からContactForm7のメールフォーム画面に入力して送信したメールが文字化けします。)
    現在はOnに戻しています。
    今後は教えていただいたコンフリクトの可能性とリスクを意識しておこうと思います。
    ありがとうございました。

    モデレーター IKEDA Yuriko

    (@lilyfan)

    わたしも mbstring.encoding_translation On はおすすめしません。これを On にすると、他の部分で文字化けする可能性が大です。例えば、コメントフォームの入力が化けたりする可能性があります。特に、「半角カナのみ」を入れた場合に EUC-JP と誤認してしまい、それを UTF-8 に変換しようとして変なことが起こりそうです。

    自動変換に頼らず、フォームを受け取る部分で「is_mobile() が true ならば文字コードを変換する」というコードを追加した方が安全です。

    # 「解決」とは言い難い状況だと思うので未解決に戻します。

    トピック投稿者 takuzy

    (@takuzy)

    IKEDA Yurikoさん。回答ありがとうございます。

    これを On にすると、他の部分で文字化けする可能性が大です。例えば、コメントフォームの入力が化けたりする可能性があります。特に、「半角カナのみ」を入れた場合に EUC-JP と誤認してしまい、それを UTF-8 に変換しようとして変なことが起こりそうです。

    上記ご指摘を受けましてmbstring.encoding_translation Onの状態で
    半角カナのみを使用して下記の動作検証をしてみました。
    ・PCからContactForm7で作成したメールフォーム画面に入力して送信されたメールを見る
    ・PCからWordpressの記事のコメント欄に入力してコメントを見る
    ・携帯からWordpressの記事のコメント欄に入力してコメントを見る
    ・携帯からContactForm7のメールフォーム画面に入力して送信されたメールを見る
    結果はすべてにおいて、文字化けしたり不具合が起きることはありませんでした。

    自動変換に頼らず、フォームを受け取る部分で「is_mobile() が true ならば文字コードを変換する」というコードを追加した方が安全です。

    当方、PHPはやったことがなくまったくの素人です。
    具体的にはどこのファイルにどんなコードを入れればいいのでしょうか?
    大変恐れ入りますが、ご教授いただければ幸いです。
    よろしくお願いいたします。

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • トピック「ContactForm7 & MobileEye で携帯からメールフォームに入力するとメールが文」には新たに返信することはできません。