• 解決済 infibility

    (@infibility)


    Contact Form 7を使用して申込画面を作っておりますが、
    一部のユーザーより赤枠のエラーが表示されてしまい、送信ができないという問い合わせが何度か来ております。
    社内のユーザーでテストを行ったところ正常に送信できており、
    エラーログにも何も残されていないため原因の追跡ができておりません。

    一部のユーザーは送信でき、一部のユーザーはエラー表示となる場合に、
    エラーの原因を把握する方法はありますでしょうか。

    よろしくお願いいたします。

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

    (@takayukister)

    FAQ > 私の場合は赤いボーダーラインのエラーが出るのですが、どうすれば直せますか?

    こちらの FAQ に説明があるとおり、赤ボーダーエラーの直接理由は「wp_mail() が false を返した」です。それ自体 PHP にとっては正常応答の範囲なので PHP のエラーログに何も残ってないとしても不思議はないかと思います。調査するとしたら、まずは SMTP サービスのデバッグモード等を活用してなるべく広範囲のログをチェックするところからでしょうか。原因追求はともかく問題発生を抑えたい、という話であれば、より信頼性の高い SMTP サービスを利用するといいかもしれません。

    トピック投稿者 infibility

    (@infibility)

    @takayukister様、ご回答いただきありがとうございます。

    エラーの理由に着き、教えていただきありがとうございます。
    WP Mail SMTPプラグインを利用してSMTPサーバを指定しているのですが、そちらのサーバでのトラブルと考えたほうが良さそうですね。問題の切り分けができて、一つ前に進むことができました。
    SMTPサーバの方で送信エラーが出ていないかどうか問い合わせることにいたします。

    すぐに回答頂き、助かりました。ありがとうございました。

    トピック投稿者 infibility

    (@infibility)

    その後、SMTPサーバーの方のログを見ていただいたのですが、
    メール送信もしておらず、エラーも出ていない、という事がわかりました。

    SMTPサーバーに送信のリクエストが行っていないとすると、どのような対応が可能かどうかおわかりになる方はいらっしゃいますでしょうか。
    現在PHPにもSMTPにもエラーが記録されておらず、赤枠のエラーでメール送信ができていないという状態です。

    よろしくお願いいたします。

    こんにちは

    WordPress 5.1 のソースを見たところ、wp_mail が内部で使っている PHPMailer で例外が発生した場合(≒赤枠のエラー)にはエラーメッセージを取得できます。
    多分、主にネットワークエラーとかの場合じゃないかと思いますが・・・

    以下のようなフックをどこかに書けば、この例外をログファイルに出力できます。
    (一度も実行していないので、参考程度にお願いします)
    ログ出力の詳細については CODEX(WP_DEBUG_LOG) を参照してみてください。

    function my_wp_mail_failed( 'my_wp_mail_failed', $wp_error ){
      error_log( $wp_error->get_error_message() );
    }
    add_action( 'wp_mail_failed', 'my_wp_mail_failed', 10, 1 );

    ※例外が発生しないような場合(PHPMailerのソースまで見ていないので、どのようなケースか分かりませんが)には、エラーメッセージを取得することができません。

    トピック投稿者 infibility

    (@infibility)

    @munyagu

    ありがとうございます、wp_mail_failedというフックがあるのですね。
    WP SMTP MAILプラグインを無効化して、ログ取得を開始しました。

    しばらく様子を見てみようと思います。
    ありがとうございます。

    ※ご教示いただいたコードそのままではエラーが出てしまったため、以下の通り変更しています。
    function my_wp_mail_failed($wp_error){
    error_log( $wp_error->get_error_message());
    }
    add_action(‘wp_mail_failed’,’my_wp_mail_failed’,10,1);

    トピック投稿者 infibility

    (@infibility)

    その後、引き続き状況が多発しログに残らない状態が続いていたのですが、
    エラーではなくスパム判定されていたことに今頃気づきました。
    ユーザへの表示を色・文章ともに同じにしており、エラーだと思いこんでおりました。

    フォームのバリデーションが厳しいため何度か送信ボタンを押すことでスパム判定された可能性があり、
    実際に3度連続送信したところエラー(スパム判定)の再現ができました。

    Akismetプラグインを無効化したのですが、その他にスパム判定をさせない方法はありますでしょうか?

    Akismetプラグインを無効化したのですが、その他にスパム判定をさせない方法はありますでしょうか?

    ということの意図がちょっと分からないのですが、Akismet でコメント欄などはスパム判定したいが、Contact Form 7 での送信はスパム判定したくない、ということでしょうか?

    もしそうなら、Contact Form 7 のフィールド設定から Akismet のオプションを削除すれば良いと思います。
    Akismet によるスパムフィルタリング

    それとも、Contact Form 7 での送信の中で、何らかの条件ではスパム判定したくない、ということでしょうか?

    トピック投稿者 infibility

    (@infibility)

    その後、reCaptureを外したところ、お客様からの送信エラーの報告がなくなりました。
    reCapther V2の時は問題なかったようなのですが、V3になってからはValidationで1~2回引っかかったあとに送信しようとすると、reCaptureがスパム判定してしまっていたようです。
    一旦この状態で運用していこうと思います。

    スパム判定とエラー判定の違いに気付かなかったなど、皆様に色々と御迷惑をおかけしてしまいましたが、プラグインの挙動にも詳しくなることができました。
    トピックに返信いただいた皆様、ありがとうございました。

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • トピック「一部のユーザーがエラーで送信できない場合の原因追求の方法を知りたいです」には新たに返信することはできません。