まず再現条件を記録する
発生時刻、ブラウザー、入力内容の特徴、添付の有無、表示メッセージを記録します。テスト用の宛先とデータを使い、同じ申込みを何度も送って重複処理を起こさないようにします。
応答によって調査を分ける
| 状態の例 | 主な確認先 |
|---|---|
| validation_failed | 必須項目、形式、フォーム定義 |
| spam | スパム対策、Turnstileなどの認証、判定ログ |
| mail_failed | wp_mail、送信元、SMTP、サーバー制限 |
| mail_sent | 到達は別確認。受信側・迷惑メール・配送ログ |
| API通信が失敗 | REST API、WAF、キャッシュ、JavaScript |
設定と外部連携を照合する
From、To、Reply-Toを確認し、訪問者のメールを送信元へ直接使う構成は認証不一致を起こさないか見直します。Turnstileなどはホスト名、キー、通信失敗、環境差を確認します。秘密キーはブラウザーのコードや共有資料へ出さないでください。
対処後に確かめること
成功画面、実際の受信、自動返信、添付、エラー時の再操作を確認します。スパム対策の全面停止で済ませず、原因を特定して必要な例外や設定を調整します。途中で成功する不具合は、メール配送や通信の一時障害も含めて調べます。
成功・失敗の間欠的な症状を調べる
一度失敗して再送で成功した場合は、発生時刻、API応答、認証サービス、メール送信基盤の記録を照合します。WAF、レート制限、ネットワーク、タイムアウト、配送側の一時障害も候補になります。成功した事実だけで、最初の送信がどこまで処理されたかを断定しないでください。
カスタム表示がある場合
独自CSSで枠色を変えたり、成功メッセージを隠したり、完了画面へ遷移させたりしている場合は、見た目から状態が読み取れません。実際のAPI応答とCF7のイベント、ブラウザーの通信結果を確認します。
よくある質問
完了ページに移動したらメールも届いていますか?
配送の最終到達は別です。成功時だけ遷移する実装でも、受信・自動返信・迷惑メール判定を実際に確認します。
スパム対策を外せば直りますか?
切り分けになる場合はありますが、恒久対策にはしません。キー、対象ホスト、通信、判定、キャッシュを調べ、必要な保護を再設定します。