FAQ > 私の場合は赤いボーダーラインのエラーが出るのですが、どうすれば直せますか?
こちらの FAQ に説明があるとおり、赤ボーダーエラーの直接理由は「wp_mail() が false を返した」です。それ自体 PHP にとっては正常応答の範囲なので PHP のエラーログに何も残ってないとしても不思議はないかと思います。調査するとしたら、まずは SMTP サービスのデバッグモード等を活用してなるべく広範囲のログをチェックするところからでしょうか。原因追求はともかく問題発生を抑えたい、という話であれば、より信頼性の高い SMTP サービスを利用するといいかもしれません。
@takayukister様、ご回答いただきありがとうございます。
エラーの理由に着き、教えていただきありがとうございます。
WP Mail SMTPプラグインを利用してSMTPサーバを指定しているのですが、そちらのサーバでのトラブルと考えたほうが良さそうですね。問題の切り分けができて、一つ前に進むことができました。
SMTPサーバの方で送信エラーが出ていないかどうか問い合わせることにいたします。
すぐに回答頂き、助かりました。ありがとうございました。
その後、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のソースまで見ていないので、どのようなケースか分かりませんが)には、エラーメッセージを取得することができません。
@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);
その後、引き続き状況が多発しログに残らない状態が続いていたのですが、
エラーではなくスパム判定されていたことに今頃気づきました。
ユーザへの表示を色・文章ともに同じにしており、エラーだと思いこんでおりました。
フォームのバリデーションが厳しいため何度か送信ボタンを押すことでスパム判定された可能性があり、
実際に3度連続送信したところエラー(スパム判定)の再現ができました。
Akismetプラグインを無効化したのですが、その他にスパム判定をさせない方法はありますでしょうか?
Akismetプラグインを無効化したのですが、その他にスパム判定をさせない方法はありますでしょうか?
ということの意図がちょっと分からないのですが、Akismet でコメント欄などはスパム判定したいが、Contact Form 7 での送信はスパム判定したくない、ということでしょうか?
もしそうなら、Contact Form 7 のフィールド設定から Akismet のオプションを削除すれば良いと思います。
Akismet によるスパムフィルタリング
それとも、Contact Form 7 での送信の中で、何らかの条件ではスパム判定したくない、ということでしょうか?
その後、reCaptureを外したところ、お客様からの送信エラーの報告がなくなりました。
reCapther V2の時は問題なかったようなのですが、V3になってからはValidationで1~2回引っかかったあとに送信しようとすると、reCaptureがスパム判定してしまっていたようです。
一旦この状態で運用していこうと思います。
スパム判定とエラー判定の違いに気付かなかったなど、皆様に色々と御迷惑をおかけしてしまいましたが、プラグインの挙動にも詳しくなることができました。
トピックに返信いただいた皆様、ありがとうございました。