本文へ移動
ブログ始め方ガイド選ぶ理由と、進める手順。

当サイトは広告を掲載しています。編集方針と広告との関係は運営情報から確認できます。

WORDPRESS / 困ったときの切り分け

Contact Form 7が
送れない・届かない。
止まった場所から、直す。

「送信失敗」と「送信完了なのに未受信」は、調べる場所が違います。まず表示を分け、変更を一つに絞り、最後は受信箱まで確かめましょう。

いまの症状から確認する ↓

公式確認 2026-10-17 | 実WordPress+ローカルSMTPで検証
本番配送・外部受信箱への到達は未検証

自分が管理するWordPressサイト向けの記事です。フォームの利用者の方は連打せず、時刻と表示文言を控え、サイトに別の連絡手段があれば運営者へ確認してください。

01 / 最初の分岐

いま見えている表示は?

色は標準デザインの目安です。テーマで変わるため、メッセージと状態を優先してください。ここでは画面の状態だけを選びます。入力内容・メールアドレス・ログは貼り付けません。

フォームの状態を一つ選んでください

この下の見出しから直接読んでも、同じ手順を確認できます。

02 / 全体像

画面から受信箱まで、4段階ある。

  1. 1

    ブラウザー

    入力・JavaScript・通信

    ここで止まると、処理は届かない
  2. 2

    CF7の判定

    必須項目・同意・スパム

    通信が成功しても、送信前に止まる
  3. 3

    メール送信処理

    WordPress → 送信経路

    成功表示は、この側の結果
  4. 4

    受信箱

    受信・迷惑フォルダー・振り分け

    実際の受信を、別に確かめる
当サイト作成の概念図。SMTPを使わない構成もあります。CF7の成功表示だけで4まで確認したことにはなりません。
HTTP 200 ≠ メール送信成功

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 / 送信前に止まる場合

入力・迷惑判定・送信失敗を分ける。

入力・同意

項目の注意が出たら、その場所から直す。

  1. 名前・メール形式・必須項目など、注意が出ている欄を確認。メールアドレスは自分が管理する宛先で点検します。
  2. 同意欄がある場合は、条件を読んで確認。分からない条件に無理に同意しません。
  3. 修正後、合成の本文で一度だけ再確認。次の段階へ進んだら、入力エラーの原因だけは解消したと判断します。

ここでは配送設定を変えません。正しい入力でも進めない場合は、管理者がフォームタグ・独自検証・同意の設定を確認します。必須条件を外すためだけの編集はしません。

迷惑判定

保護を止める前に、どの判定かを確認する。

送信失敗と迷惑判定に同じ文言が使われることがあります。管理者が状態や非機密の情報で判定元を確認し、reCAPTCHAだけを原因と決めないでください。

  • 使っている保護(Akismet、reCAPTCHA、追加の保護プラグイン等)と、直前の変更を確認。
  • キーの適用先ドメイン、必要なスクリプトの読み込み、キャッシュ・最適化の変更を一つずつ点検。秘密キーは撮影・共有しない。
  • 原因の再現は複製・隔離環境で。テーマやプラグインとの競合は一変更ずつ比較し、元へ戻せるようにする。

本番の迷惑メール対策やWAFを常時無効にしない。「保護を外したら送れた」は、必要な保護を維持した解決にはなりません。判定を調べるための保存機能も、問い合わせ本文やIP等の保存範囲を確認してから使います。

CF7公式:迷惑判定の説明・Akismet連携の公式説明(確認2026-10-17)。本記事のspam実験は判定フックによる再現で、実サービスの精度検証ではありません。

送信処理の失敗

CF7から先の設定と、送信経路を点検する。

mail_failed と分かったら、メールタブの確認へ。宛先・送信元・タグの対応、利用中の送信サービスの制限や障害を調べます。

既にSMTPプラグインが動いているなら、別のSMTPプラグインを重ねません。SMTPを検討する場合も、接続先・認証方式・送信元・既存経路との関係を提供者の手順で確認します。認証情報は本文やログへ貼り付けないでください。

赤い表示を、SMTPの認証失敗だけに結び付けないこと。独自フックによる中断など、拡張側の可能性もあります。

04 / くるくる・反応なし

送信ボタンの後、通信まで進んだ?

まず直前に変えたものを控えます。JavaScriptの遅延・結合、キャッシュ、同意管理、テーマ変更などです。原因不明のまま本番プラグインを一括停止しません。

  1. 管理するフォームで、テストを一度だけ。

    実問い合わせや本番顧客の情報を使わず、秘密のないテスト本文を用意。再送を連打しません。表示結果と時刻を自分の安全な控えへ。

  2. PCならNetworkで feedback を探す。

    ブラウザーの開発者ツール → Network/ネットワークを開き、以前の記録を消してから操作。自分のサイトのCF7送信リクエストが出るか、応答コードを見ます。スマホしかない・操作に不安がある場合は、この作業を管理担当へ渡してください。

  3. 「ない」「エラー」「応答あり」で分ける。

    リクエストが出ない
    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遮断と断定しません。

既知の正常な複製環境で再現し、最適化やテーマを一つずつ比較します。セキュリティ制限をすべて解除する設定例は使いません。

NetworkのPayload・応答全文・HARを、そのまま公開しない。

入力内容、識別情報、Cookieやヘッダー等が含まれる可能性があります。共有するなら、担当者が必要とする最小限の時刻・HTTPコード・状態名を、内容を除いた形で扱ってください。パスワードや問い合わせ本文を当サイトへ送る必要はありません。

CF7公式:AJAXが動かない場合(確認2026-10-17)。

05 / メール設定

宛先・送信元・返信先は、それぞれ別。

WordPressの「お問い合わせ」から対象フォームを開き、「メール」タブを確認します。フォームを複数使うサイトでは、ショートコードや設置先と対象が合っているか先に点検します。

To / 送信先
その通知を受け取る人管理者向けメールなら、管理する受信先。
From / 送信元
サイト側の送信者サイトドメインに属する適切な送信元を用意。
Reply-To / 返信先
返信するときの宛先訪問者へ返信したい場合の指定先。
メール (2)
追加の通知・自動返信主メールとは宛先も結果も分けて点検。
当サイト作成の設定項目の役割図。管理画面の実写ではありません。具体的なアドレスや秘密設定は示していません。
  1. 変更前の設定を非公開で控える。

    送信先、送信元、返信先、本文、使用タグ、メール (2) の有無を自分の環境で記録。管理画面の全画面画像を公開しません。

  2. 宛先と、フォームタグの対応を照合。

    送信先の綴り・役割、件名や本文が空にならないか、メールタグがフォーム項目と対応するかを確認。設定検証の警告があれば、公式説明から対象欄を調べます。警告がないことだけで実受信成功にはしません。

  3. 訪問者のアドレスをFromへ無条件に使わない。

    Fromはサイトドメインに属する送信元を使うのがCF7公式の基本です。返信を訪問者へ返すなら、追加ヘッダーのReply-Toへ適切なメールタグを指定する方式を確認。送信サービスがFromを固定・書き換えする場合は、そのサービスの条件も照合します。

    返信先の例:
    Reply-To: [your-email]
    フォームに対応するメール項目がある場合に、追加ヘッダーで指定する例です。送信元とは別の項目です。サイトに合うタグ名かを確認してください。

  4. 送信サービスの条件と、認証を確認。

    利用中のサーバーやメール提供者の手順で、送信元・利用制限・認証方式を確認します。SPF・DKIM・DMARCはメール認証の確認項目であり、同じ設定をすべての環境へ貼るものではありません。既存DNSを控え、送信に使うサービスと担当者へ照合。DMARCの厳しい拒否設定やSPFの重複追加を推測で行いません。

公式根拠:メール設定・送信元・返信先の基本・Googleのメール送信者ガイドライン。確認2026-10-17。認証や設定を整えても到達保証にはなりません。

06 / 完了表示なのに届かない

受信先を二つに分けて、到着を確認する。

管理者向けがない

管理者の受信箱と配送経路へ。

  1. メールタブの送信先が、想定した受信箱か確認。
  2. 迷惑フォルダー、振り分け、転送、容量・受信制限を確認。
  3. 同じ時刻・件名の合成テストを照合。送信サービス側の受理と、受信側の到着を分ける。
自動返信だけがない

メール (2) を、別に点検。

  1. メール (2) の使用設定、宛先タグと必須メール項目を確認。
  2. 主メールが正常でも、自動返信が成功したとは決めない。
  3. 自分が管理するテスト受信箱で、自動返信の本文まで確認。

独自実験では、自動返信だけが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受け口へ実際に接続しました。単に成功値を返すメール関数の置き換えではありません。

2026-10-17の観測。いずれもRESTのHTTP応答は200
合成ケースCF7の状態ローカルSMTPの結果
必須項目なし/形式不正validation_failed接続・送信なし
同意なしacceptance_missing接続・送信なし
迷惑判定を強制spam接続・送信なし
主メールをSMTPが550拒否mail_failed拒否1件・受理0件
主メールをSMTPが250受理mail_sent受理1件。外部受信箱は未確認
主メール受理+メール (2) 拒否mail_sent受理1件・拒否1件
隔離CF7で必須入力不足を送信し、入力内容の確認を求める表示が出た実画面
実CF7の入力エラー。合成データの隔離画面を切り出し。アドレス・本文は写していません。
隔離SMTPがメールを拒否し、CF7に送信失敗が表示された実画面
実CF7の送信失敗。ローカルSMTPの550拒否を再現。実サーバー障害の記録ではありません。
ローカルSMTPが受理した後にCF7が送信完了を表示した実画面。外部配送は行っていない
実CF7の送信完了。主メールだけ受理した場合も、メール (2) だけ拒否した場合も同じ表示。個別結果は上表で区別します。
未確認

この実験で証明していないこと

  • 本番サーバー・外部メールサービスの認証、配送、迷惑フォルダーへの振り分け。
  • reCAPTCHA・Akismet等が実ユーザーを判定する精度。spamはCF7フックで強制しました。
  • すべてのテーマ・最適化・セキュリティ製品の競合。個別環境で確認が必要です。

SMTP受け口は本文・アドレスを保存せず、件数だけ記録。受信箱を備えないため、「届かなかった実例」や「外部配送成功例」とは扱いません。実画面は日本語CF7の隔離フロント画面です。

08 / 完了と、相談の目安

「直った」は、受信する側まで確かめてから。

受信できたか確認できないなら、完了は保留。

表示が直ったこと、送信処理が成功したこと、実際に受信したことを別々に記録します。wpcf7mailsent 等のイベントだけをメール到達や問い合わせ対応完了として計測しません。

一変更ずつ比較し、悪化したら戻す。

元のフォーム・メール設定、使用中の送信経路、キャッシュ・最適化の設定を非公開で控えてから作業。原因に関係する一つだけ変更し、同じ合成ケースで確認します。悪化したら保存した設定へ戻し、原因不明なら追加変更を止めます。バックアップと復元の対象・時点を確認する →

管理者・ホスティングへ相談するときの、最小限のメモ
  • 現象の起きた時刻とタイムゾーン。
  • フォームの設置ページ、管理者宛/自動返信のどちらか。
  • 表示文言、HTTPコード、確認できたCF7状態。
  • 使用バージョン、直前に変えた項目、戻した結果。

本文、実アドレス、認証情報、キー、Cookie、未編集のHARやログ全文は添付しません。提供者が必要とする情報は、権限のある安全な窓口で最小限に共有してください。

本記事の範囲は送信エラー・メール未達の切り分けです。フォーム新設は設定記事、メール全般は送受信記事へ分けています。

根拠・検証・更新

公式情報と実験結果を区別し、設定で変わる条件を明示しました。問い合わせ内容や認証情報を集める機能はありません。更新条件は、CF7の状態/メール (2) 処理の変更、WordPressのメール処理変更、公式手順の変更、再現できる読者の問題が確認された場合です。

一次資料確認・独自実験:2026-10-17。今回の画面・実験は合成データの隔離環境です。実利用者・実端末・本番配送を検証済みとはしません。編集方法は編集方針、広告との関係は広告方針へ。