WORDPRESS / 困ったときの切り分け
Contact Form 7が
送れない・届かない。
止まった場所から、直す。
「送信失敗」と「送信完了なのに未受信」は、調べる場所が違います。まず表示を分け、変更を一つに絞り、最後は受信箱まで確かめましょう。
いまの症状から確認する ↓自分が管理するWordPressサイト向けの記事です。フォームの利用者の方は連打せず、時刻と表示文言を控え、サイトに別の連絡手段があれば運営者へ確認してください。
01 / 最初の分岐
いま見えている表示は?
色は標準デザインの目安です。テーマで変わるため、メッセージと状態を優先してください。ここでは画面の状態だけを選びます。入力内容・メールアドレス・ログは貼り付けません。
状態を一つ選んでください。分からない場合も選べます。
この下の見出しから直接読んでも、同じ手順を確認できます。
02 / 全体像
画面から受信箱まで、4段階ある。
- 1
ブラウザー
入力・JavaScript・通信
ここで止まると、処理は届かない - 2
CF7の判定
必須項目・同意・スパム
通信が成功しても、送信前に止まる - 3
メール送信処理
WordPress → 送信経路
成功表示は、この側の結果 - 4
受信箱
受信・迷惑フォルダー・振り分け
実際の受信を、別に確かめる
200は通信先が応答したことを示しても、CF7はその中で入力不備・迷惑判定・送信失敗を返せます。隔離実験でも確認しました。
| 画面の手掛かり | CF7 RESTの状態 技術者が確認する場合 | 次の確認 |
|---|---|---|
| 項目に入力の注意 | validation_failed | 該当する入力欄 |
| 必要な同意がない | acceptance_missing | 同意条件・チェック欄 |
| 迷惑判定(標準は橙) | spam | 判定元・読み込み・保護設定 |
| 送信処理の失敗(標準は赤) | mail_failed | メール設定・送信経路 |
| 送信完了(標準は緑) | mail_sent | 宛先・配送・受信箱 |
| 処理中のまま・結果なし | 応答なし、HTTPエラーなど | JavaScript・通信・応答 |
RESTの値とHTMLのフォームクラスは別です。例:RESTの mail_sent に対し画面のクラスは sent。独自拡張には別の状態もあります。色だけで原因を断定しません。CF7公式FAQ・フォーム状態の公式説明(確認2026-10-17)。
03 / 送信前に止まる場合
入力・迷惑判定・送信失敗を分ける。
項目の注意が出たら、その場所から直す。
- 名前・メール形式・必須項目など、注意が出ている欄を確認。メールアドレスは自分が管理する宛先で点検します。
- 同意欄がある場合は、条件を読んで確認。分からない条件に無理に同意しません。
- 修正後、合成の本文で一度だけ再確認。次の段階へ進んだら、入力エラーの原因だけは解消したと判断します。
ここでは配送設定を変えません。正しい入力でも進めない場合は、管理者がフォームタグ・独自検証・同意の設定を確認します。必須条件を外すためだけの編集はしません。
保護を止める前に、どの判定かを確認する。
送信失敗と迷惑判定に同じ文言が使われることがあります。管理者が状態や非機密の情報で判定元を確認し、reCAPTCHAだけを原因と決めないでください。
- 使っている保護(Akismet、reCAPTCHA、追加の保護プラグイン等)と、直前の変更を確認。
- キーの適用先ドメイン、必要なスクリプトの読み込み、キャッシュ・最適化の変更を一つずつ点検。秘密キーは撮影・共有しない。
- 原因の再現は複製・隔離環境で。テーマやプラグインとの競合は一変更ずつ比較し、元へ戻せるようにする。
本番の迷惑メール対策やWAFを常時無効にしない。「保護を外したら送れた」は、必要な保護を維持した解決にはなりません。判定を調べるための保存機能も、問い合わせ本文やIP等の保存範囲を確認してから使います。
CF7公式:迷惑判定の説明・Akismet連携の公式説明(確認2026-10-17)。本記事のspam実験は判定フックによる再現で、実サービスの精度検証ではありません。
CF7から先の設定と、送信経路を点検する。
mail_failed と分かったら、メールタブの確認へ。宛先・送信元・タグの対応、利用中の送信サービスの制限や障害を調べます。
既にSMTPプラグインが動いているなら、別のSMTPプラグインを重ねません。SMTPを検討する場合も、接続先・認証方式・送信元・既存経路との関係を提供者の手順で確認します。認証情報は本文やログへ貼り付けないでください。
赤い表示を、SMTPの認証失敗だけに結び付けないこと。独自フックによる中断など、拡張側の可能性もあります。
04 / くるくる・反応なし
送信ボタンの後、通信まで進んだ?
まず直前に変えたものを控えます。JavaScriptの遅延・結合、キャッシュ、同意管理、テーマ変更などです。原因不明のまま本番プラグインを一括停止しません。
管理するフォームで、テストを一度だけ。
実問い合わせや本番顧客の情報を使わず、秘密のないテスト本文を用意。再送を連打しません。表示結果と時刻を自分の安全な控えへ。
PCならNetworkで
feedbackを探す。ブラウザーの開発者ツール → Network/ネットワークを開き、以前の記録を消してから操作。自分のサイトのCF7送信リクエストが出るか、応答コードを見ます。スマホしかない・操作に不安がある場合は、この作業を管理担当へ渡してください。
「ない」「エラー」「応答あり」で分ける。
- リクエストが出ない
- CF7スクリプトが読み込まれているか、ブラウザーのエラーや他のJavaScriptとの競合を確認。テーマの読み込み処理を疑う場合も複製環境から。
- 403・404・5xx・接続失敗
- 403だけでWAFと断定しない。RESTの制限、URL、認証・キャッシュ、サーバーエラーを担当者と確認。5xxや業務影響があれば、変更を止めて提供者へ。
- 200でJSONが返る
- 技術者は
statusを確認し、対応表へ。200でもspamやmail_failedなら未解決。JSON以外の応答や途中で壊れた応答も区別します。
RESTは開くのに、フォームだけ動かないとき
RESTの入口が200でも、対象フォームの送信先まで動く証明にはなりません。CF7で使う送信処理、該当URLの制限、スクリプトの読み込みを確認します。JavaScriptが動かない場合は非AJAX送信になることもあり、画面が再読込したことだけでREST遮断と断定しません。
既知の正常な複製環境で再現し、最適化やテーマを一つずつ比較します。セキュリティ制限をすべて解除する設定例は使いません。
入力内容、識別情報、Cookieやヘッダー等が含まれる可能性があります。共有するなら、担当者が必要とする最小限の時刻・HTTPコード・状態名を、内容を除いた形で扱ってください。パスワードや問い合わせ本文を当サイトへ送る必要はありません。
CF7公式:AJAXが動かない場合(確認2026-10-17)。
05 / メール設定
宛先・送信元・返信先は、それぞれ別。
WordPressの「お問い合わせ」から対象フォームを開き、「メール」タブを確認します。フォームを複数使うサイトでは、ショートコードや設置先と対象が合っているか先に点検します。
- To / 送信先
- その通知を受け取る人管理者向けメールなら、管理する受信先。
- From / 送信元
- サイト側の送信者サイトドメインに属する適切な送信元を用意。
- Reply-To / 返信先
- 返信するときの宛先訪問者へ返信したい場合の指定先。
- メール (2)
- 追加の通知・自動返信主メールとは宛先も結果も分けて点検。
変更前の設定を非公開で控える。
送信先、送信元、返信先、本文、使用タグ、メール (2) の有無を自分の環境で記録。管理画面の全画面画像を公開しません。
宛先と、フォームタグの対応を照合。
送信先の綴り・役割、件名や本文が空にならないか、メールタグがフォーム項目と対応するかを確認。設定検証の警告があれば、公式説明から対象欄を調べます。警告がないことだけで実受信成功にはしません。
訪問者のアドレスをFromへ無条件に使わない。
Fromはサイトドメインに属する送信元を使うのがCF7公式の基本です。返信を訪問者へ返すなら、追加ヘッダーのReply-Toへ適切なメールタグを指定する方式を確認。送信サービスがFromを固定・書き換えする場合は、そのサービスの条件も照合します。
返信先の例:
Reply-To: [your-email]
フォームに対応するメール項目がある場合に、追加ヘッダーで指定する例です。送信元とは別の項目です。サイトに合うタグ名かを確認してください。送信サービスの条件と、認証を確認。
利用中のサーバーやメール提供者の手順で、送信元・利用制限・認証方式を確認します。SPF・DKIM・DMARCはメール認証の確認項目であり、同じ設定をすべての環境へ貼るものではありません。既存DNSを控え、送信に使うサービスと担当者へ照合。DMARCの厳しい拒否設定やSPFの重複追加を推測で行いません。
公式根拠:メール設定・送信元・返信先の基本・Googleのメール送信者ガイドライン。確認2026-10-17。認証や設定を整えても到達保証にはなりません。
06 / 完了表示なのに届かない
受信先を二つに分けて、到着を確認する。
管理者の受信箱と配送経路へ。
- メールタブの送信先が、想定した受信箱か確認。
- 迷惑フォルダー、振り分け、転送、容量・受信制限を確認。
- 同じ時刻・件名の合成テストを照合。送信サービス側の受理と、受信側の到着を分ける。
メール (2) を、別に点検。
- メール (2) の使用設定、宛先タグと必須メール項目を確認。
- 主メールが正常でも、自動返信が成功したとは決めない。
- 自分が管理するテスト受信箱で、自動返信の本文まで確認。
独自実験では、自動返信だけがSMTPで拒否されても、CF7は mail_sent を返しました。主メールと自動返信を一緒に「配送済み」と扱わないでください。条件と結果を見る →
ログを調べる必要がある場合は、担当者が送信時刻・経路・拒否理由を自分の環境で確認します。記録に本文・アドレス・認証情報を残す設定を安易に有効にせず、保存範囲・アクセス権・削除方法を先に決めてください。CF7本体が標準でメッセージを保存しないことと、追加プラグインやサーバーも保存していないことは別です。
再送する前に、既に届いていないか確認。画面が止まっても、途中まで送信されている場合があります。複数の送信経路・宛先を同時に変更すると、何が直ったのか分からなくなります。
CF7以外のメールも届かない、Xserverの送受信全般が疑わしい場合は、Xserverメールの送受信を切り分ける記事へ。本記事はサーバー会社の乗り換えを解決策として勧めません。
WordPress公式:wp_mail()のtrueは受信成功を意味しない・CF7公式FAQ(確認2026-10-17)。
07 / 実際に確かめた範囲
SMTPが受理しても、受信箱の確認は残る。
隔離実験 WordPress 7.1.2・CF7 6.2.2・PHP 8.5.11・合成SQLiteで検証。CF7からWordPressの wp_mail()、PHPMailerを通し、localhostのSMTP受け口へ実際に接続しました。単に成功値を返すメール関数の置き換えではありません。
| 合成ケース | CF7の状態 | ローカルSMTPの結果 |
|---|---|---|
| 必須項目なし/形式不正 | validation_failed | 接続・送信なし |
| 同意なし | acceptance_missing | 接続・送信なし |
| 迷惑判定を強制 | spam | 接続・送信なし |
| 主メールをSMTPが550拒否 | mail_failed | 拒否1件・受理0件 |
| 主メールをSMTPが250受理 | mail_sent | 受理1件。外部受信箱は未確認 |
| 主メール受理+メール (2) 拒否 | mail_sent | 受理1件・拒否1件 |



この実験で証明していないこと
- 本番サーバー・外部メールサービスの認証、配送、迷惑フォルダーへの振り分け。
- reCAPTCHA・Akismet等が実ユーザーを判定する精度。spamはCF7フックで強制しました。
- すべてのテーマ・最適化・セキュリティ製品の競合。個別環境で確認が必要です。
SMTP受け口は本文・アドレスを保存せず、件数だけ記録。受信箱を備えないため、「届かなかった実例」や「外部配送成功例」とは扱いません。実画面は日本語CF7の隔離フロント画面です。
08 / 完了と、相談の目安
「直った」は、受信する側まで確かめてから。
- 必須項目・形式・必要な同意の検証が働く。
- フォームの表示・操作・送信結果に異常がない。
- 管理する受信箱で、テストの時刻・件名・本文を照合できる。
- 自動返信を使う場合は、その受信箱でも本文を確認できる。
- 保護・同意管理・ほかのフォームを維持し、不要なログやテストデータを整理した。
受信できたか確認できないなら、完了は保留。
表示が直ったこと、送信処理が成功したこと、実際に受信したことを別々に記録します。wpcf7mailsent 等のイベントだけをメール到達や問い合わせ対応完了として計測しません。
一変更ずつ比較し、悪化したら戻す。
元のフォーム・メール設定、使用中の送信経路、キャッシュ・最適化の設定を非公開で控えてから作業。原因に関係する一つだけ変更し、同じ合成ケースで確認します。悪化したら保存した設定へ戻し、原因不明なら追加変更を止めます。バックアップと復元の対象・時点を確認する →
管理者・ホスティングへ相談するときの、最小限のメモ
- 現象の起きた時刻とタイムゾーン。
- フォームの設置ページ、管理者宛/自動返信のどちらか。
- 表示文言、HTTPコード、確認できたCF7状態。
- 使用バージョン、直前に変えた項目、戻した結果。
本文、実アドレス、認証情報、キー、Cookie、未編集のHARやログ全文は添付しません。提供者が必要とする情報は、権限のある安全な窓口で最小限に共有してください。
本記事の範囲は送信エラー・メール未達の切り分けです。フォーム新設は設定記事、メール全般は送受信記事へ分けています。
根拠・検証・更新
公式情報と実験結果を区別し、設定で変わる条件を明示しました。問い合わせ内容や認証情報を集める機能はありません。更新条件は、CF7の状態/メール (2) 処理の変更、WordPressのメール処理変更、公式手順の変更、再現できる読者の問題が確認された場合です。
- Contact Form 7公式FAQ:失敗・迷惑判定・成功表示・保存の範囲。
- CF7公式のフォーム状態:画面の状態・クラス。RESTの値と区別。
- CF7公式のAJAX確認:スクリプト・競合・HTML。
- CF7公式メール設定・推奨設定:宛先・送信元・返信先・メール (2)。
- WordPress公式 wp_mail():返り値と到達の違い。
- Google公式メール送信者ガイドライン:メール認証の条件。利用サービスごとに確認。
一次資料確認・独自実験:2026-10-17。今回の画面・実験は合成データの隔離環境です。実利用者・実端末・本番配送を検証済みとはしません。編集方法は編集方針、広告との関係は広告方針へ。