Contact Form 7 のメールが届かないのは、フォーム自体の問題ではなく、WordPress がメールを送信する方法が原因のことがほとんどです。デフォルトでは WordPress がメッセージをウェブサーバーの PHP mail 関数に渡し、WP Mail SMTP は適切な認証がないとそれらのメッセージはスパムに入るか消えてしまうと言っています。以下では、最も可能性の高い原因から最も低い原因の順に診断チェックリスト、SMTP 修正と関連する DNS レコード、スパムフィルターの罠、すべての問い合わせのコピーを保持する方法、およびヘッドレスサイト上のフォームがこの問題全体をどのように回避するかについて説明します。
Contact Form 7 のメールが届かない理由
Contact Form 7 はメール自体を送信しません。メッセージを構築して WordPress に渡し、WordPress が wp_mail() で送信します。デフォルトでは、WP Mail SMTP リスティングによると、WordPress は WordPress またはお問い合わせフォームプラグインで生成されたものすべてに PHP mail 関数を使用します。その関数はサイトをホストしているサーバー経由でメッセージを送信します。そのサーバーはメールが本当に誰から来ているのかを証明することができないことがよくあります。
受信サーバーはその証明をチェックします。同じリスティングによると、Gmail、Yahoo、Office 365、Zoho はメールが本物の送信者からのものかどうかを確認し、認証がない場合、メールはスパムに行くか消えます。また、ほとんどの WordPress ホスティング企業は PHP mail 用にサーバーを正しく設定していないと主張しています。これはベンダーが修正を販売するため、ベンダーの主張として扱い、特定のホストについての判決ではなく、一般的なパターンとして扱ってください。多くのホストはメールを完全に処理します。
フォーラムの証拠は同じ方向を指しています。2024年5月のサポートスレッドでは、モデレーターの解釈は WordPress がおそらく認証なしでメールを直接送信していて、メールサーバーがそれを認識してスパムとして分類したということでした。質問した人はすでに From アドレスを変更し、それを VIP としてマークし、メールルールを書いていました。それでもジャンク扱いです。これはあなたに何かを告げています。あなた自身の受信トレイルールが役に立たない場合、障害はあなたの受信トレイの上流にあります。
もう一つのデータポイント。Contact Form 7 はそのWordPress.org リスティングで 1000 万以上のアクティブなインストールを示しています。別のプラグインのリスティングは 500 万以上と言っているため、ソースは数字について異なっていますが、どちらにせよそれは大きなインストールベースです。これは同じ障害が数百の異なる方法で報告されることを意味しています。
他に何かをする前の簡単なチェック
単一の DNS レコードを読む前にここで 5 分費やしてください。
レスポンスメッセージを読む
Contact Form 7 自体の FAQ は率直です。赤い枠はプラグインが wp_mail() で送信を試みて失敗したことを意味し、実際の理由を見つける必要があります。同じページは反対のケースを扱っており、緑色の「メッセージありがとうございます。送信されました。」ではメールが届きません。また別の問題があります。デフォルトメッセージの「メッセージを送信しようとしているときにエラーが発生しました。」は送信が何らかの理由で失敗した場合とスパムアクティビティが検出された場合の両方で表示されます。その文だけではどちらの問題があるかを判断できません。
Mail タブを確認する
Contact を開き、フォームを選択してから Mail タブを開きます。2 つのフィールドが最も重要です。To アドレスは実際に読むメールボックスである必要があり、タイプミスがないようにしてください。From アドレスは自分のドメインを使用する必要があります。訪問者のメールアドレスを使用する From アドレスは受信サーバーにとって偽造のように見えます。技術的には、実際にそうです。代わりに Reply-To ヘッダーに訪問者のアドレスを入れてください。これで返信を押すことができます。
スパムを確認し、その後タイミングについて考える
受信メールボックスのジャンクフォルダと、そのフィルタリングルールを確認してください。メッセージがそこにある場合、配信の失敗の問題ではなく配信可能性の問題があります。これは異なる修正が必要です。
診断チェックリスト、最も可能性の高い原因を最初に
- Mail タブが間違っています。チェック。To アドレス、From アドレス、タイプミス。修正。From ではドメイン上の実際のアドレスを使用し、訪問者のアドレスを Reply-To に移動してください。
- メッセージはジャンクにあります。チェック。スパムフォルダ、隔離、共有メールボックスルール。修正。そこにある場合は、ステップ 4 に進みます。送信者を安全にマークすると、認証されていないメールではほとんど保持されません。
- フォームが赤い枠を表示しています。チェック。レスポンスメッセージと Contact Form 7 の FAQ エントリ。修正。これは
wp_mail()が失敗したことを意味します。そのため、問題はサイトのメール設定にあります。ステップ 4 に進みます。 - WordPress は認証なしで PHP mail で送信しています。チェック。SMTP プラグインまたはメールサービスを使用していますか?修正。1 つをインストールしてテストメールを送信してください(次のセクション)。
- DNS レコードがないか、正しくありません。チェック。送信ドメインで SPF、DKIM、DMARC。修正。メールプロバイダーが提供するレコードを追加してください。
- スパムフィルターが本物のメッセージを拒否しています。チェック。一時的に captcha または Akismet 統合をオフにして、再送信してください。修正。統合を調整してください。フォームを保護されていないままにしないでください。
- サイト上の別の要素が干渉しています。確認すること: デフォルトテーマに切り替え、他のプラグインを無効化し、キャッシュをクリアします。修正: 1 つずつ再度有効化して、再び破損するまで確認します。
- 最近のアップデートが何かを変更しました。確認すること: PHP バージョンをプラグインの記載要件と照らし合わせます。修正: 下記の FAQ を参照してください。
ほとんどの人はステップ 4 で止まります。これは通常は正しいです。チェックリストは理由があって順序付けられています。タイプミスを修正するためにメールサービスを購入しないでください。
信頼できる修正: 認証付き送信と DNS レコード
信頼できる修正は、認証なし PHP mail の使用をやめることです。SMTP 経由で送信するか、トランザクショナルメールサービス (フォーム通知などの自動メール送信用に構築されたサービス) 経由で送信し、WP Mail SMTP などのプラグインを使用します。そのリスティングによれば、このプラグインは wp_mail() を SMTP ホスト認証情報またはメールプロバイダーを使用するように再構成します。推奨されるプロバイダー統合により、メールはプロバイダーのダイレクト API 経由で送信され、リスティングによれば、これはウェブホストが SMTP ポートをブロックしている場合でも機能します。

プラグインに関する率直な注釈:
- メーラーの選択。リスティングでは SendLayer、SMTP.com、Brevo が推奨としてマークされています。Microsoft One-Click Setup、Amazon SES、Zoho Mail は Pro としてマークされています。Gmail SMTP、Mailgun、SendGrid、Postmark などは無料リストにあります。
- 無料枠。リスティングでは Brevo で 1 日 300 通、SendGrid で最大 1 日 100 通の無料メールを引用しています。これらはプラグインベンダーが記載した数値なので、それに頼る前に各プロバイダー自身のページを確認してください。小規模なサイトの連絡先フォームは少数のメッセージを送信するため、制限が問題になることはまれですが、どこに制限があるかは知っておくべきです。
- 利益相反。これは WPForms (競合するフォームビルダー) の背後にあるチームが所有・管理しています。それはこのプラグインが Contact Form 7 で動作することを妨げませんし、それはベンダー自身の Contact Form 7 記事 が対象とするものです。これを使用したくない場合は、他の SMTP プラグインがあります。
- ロギングは有料です。メールロギング、再送信、アラート、バックアップ接続は Pro 機能として記載されており、別の有料プラグインです。無料版は送信します。記録は保持しません。
セットアップは簡単です。メーラーを選択し、From アドレスを自分が管理するドメイン上のアドレスに設定し、プラグインからテストメールを送信してから、実際のフォームを送信します。プラグインはドメインチェックも実行します: テストメールを送信するときおよび Setup Wizard の最後に、From アドレス、メーラー、送信ドメインをドメインの DNS レコードをチェックするために送信し、Tools > Site Health に最後の結果が表示されます。データがどこに行くかについて気になるならば知っておいてください。
SPF、DKIM、DMARC を平易な言葉で説明します
これらは 3 つの DNS レコードで、「送信」を「信頼」に変えるものです。
- SPF はどのサーバーがあなたのドメインのメールを送信することを許可されているかをリストします。
- DKIM は各メッセージに署名を追加し、DNS で公開する公開鍵に対してチェックされます。
- DMARC は受信サーバーにこれらのチェックが失敗したときに何をするか、そしてレポートをどこに送信するかを指示します。
メールプロバイダーのセットアップ画面は貼り付ける正確なレコードを提供するので、ここでは何も作成しません。実用的なポイント: ドメインが既に SPF レコードを持っている場合、2 番目を追加するのではなく編集してください。DNS はドメインのネームサーバーが指すどこかに存在し、それはあなたのレジストラー、ホスト、または Cloudflare のようなサービスかもしれません。不確かですか? 最初にネームサーバーを確認してください。間違ったダッシュボードで多くの編集を避けます。
スパムフィルターと誤検知
Contact Form 7 は reCAPTCHA や Akismet などのスパム保護と組み合わせることができます。これは合理的で、本当に、保護のない公開フォームはすぐにジャンク メールを引き付けます。しかし、提出物をスコアリングするフィルターは本物を誤ってスコアリングすることができ、その場合はお問い合わせは静かにドロップされます。前述の FAQ ポイントを思い出してください: 画面上の同じエラーはメール障害とスパム検出の両方をカバーします。
テストは簡単です。統合を一瞬オフにして、別のデバイスから現実的なメッセージを送信し、到着するかどうかを確認します。到着した場合、フィルターが問題でした。削除せず、緩和してください。
正当なメッセージがドロップされる可能性のある場所は以下の通りです:
- キャプチャが訪問者をボットとしてスコアリングし、フォームがそれを拒否します
- Akismet がメール ステップに到達する前にメッセージをスパムとしてマークします
- キャッシング または最適化プラグインがフォームが必要とするスクリプトを破損させます
- 受信メールボックスは配信後にフィルタリングします
どれにも当てはまらないこともあります。あるフォーラムのスレッドでは、AJAXのステータスが200でreCAPTCHA v3も正常に動作しているのに、「Failed to send your message. Please try later or contact the administrator by another method.」というエラーが出ると報告されています。プラグイン作者のTakayuki Miyoshi氏は、テーマとプラグインの情報を求めたうえで、デフォルトテーマへの切り替え、他のプラグインの無効化、キャッシュのクリアを提案し、SMTPのオン・オフにかかわらず失敗がログに残るなら、SMTPが原因である可能性は低いと指摘しました。地味なアドバイスです。それでも、たいていはそれが正解です。
すべての送信内容のコピーを保管する
ほとんどのオーナーがこれを遅く学びます。メールは通知であり、記録ではありません。メール配信に失敗すると、問い合わせは消え、訪問者は丁寧な「送信完了」メッセージを見ました。あなたは二度と知ることはできません。
解決策は、送信内容をすべてデータベースにも保存することです。Contact Form 7のアドオンの多くがこの機能を備えています。一例として、Contact Form to Any APIプラグインは、Contact Form 7の送信内容をデータベースに保存し、CSV、Excel、PDFへのエクスポートや印刷にも対応しています。さらに、POSTまたはGETでリモートAPI(たとえばCRM)へ送信内容を送ることもでき、最大5件のAPI接続が可能です。2026年7月8日にリリースされたバージョン3.0.6では、APIリクエスト失敗時のメール通知と、デフォルト90日のログ自動クリーンアップが追加されました。
その最後の詳細は有用なリマインダーです。保存された問い合わせは個人情報なので、どのくらい保管するかを決定してください。保存されたエントリは、誰かが時々リストを開く場合にのみ役に立つため、カレンダーに定期的なチェックを入れてください。前に言及した有料のWP Mail SMTP Proのログは送信メールを記録しますが、これは訪問者が送信した内容を保存することと同じではありません。
ヘッドレスサイトと静的サイトがフォームを処理する方法
静的またはヘッドレスサイトにはPHPがなく、wp_mail()もありません。フォームは別の場所に送信されます。Formspreeなどのフォームサービス、ホスティングプラットフォームのネイティブフォーム処理、または作成したサーバーレス関数によって実行されるエンドポイントです。送信は最初に保存されます。メールは唯一のコピーではなく、複数の通知の1つになります。
Netlify Formsは分かりやすい例です。フォーム検出を有効にしたあと、HTMLフォームにdata-netlify="true"またはnetlify属性を追加するだけで、追加のAPI呼び出しやJavaScriptなしに、Netlifyのサイト管理画面で送信内容を受け取れます。ドキュメントから、いくつか具体的な点を挙げます。
- AJAXでの送信にはURL エンコードされたボディが必要です。Netlify FormsはJSONフォームデータをこの時点ではサポートしていません。
- ファイルアップロードでは、フィールドごとに1つのファイル、フォームリクエストの最大8 MB、30秒のタイムアウトが可能です。
- フォームがJavaScriptまたはNext.jsなどのサーバーフレームワークによってレンダリングされている場合、NetlifyがサイトのHTMLを解析してフォームを検出するため、Netlifyの条件を満たすHTMLフォームを含める必要があります。
通知はストレージとは別です。通知ドキュメントによると、メール、Webhook、またはSlackワークスペースに送信でき、1つのフォームまたはすべてのフォームに対応しています。デフォルトでは、メールはformresponses@netlify.comから送信され、返信はそのアドレスに送信されます。ただし、Reply-to値を設定するemailという名前の入力を追加する場合を除きます。前と同じレッスン:ここでも、通知メールはテストしたい癖があります。
このようなフォームセットアップがサイトに適しているかどうかを決定する場合、WordPress スタック アドバイザーは、現在のビルドがどこにあるかを確認する簡単な方法です。
WordPress を使い続けるのが正しい場合
ほとんどの小規模ビジネスサイトでは、そのままにしておくことは問題ありません。問い合わせフォームは小さな機能です。認証済みの送信、正しいDNSレコード、各エントリの保存されたコピーを追加した場合、WordPressフォームは他の誰よりも同じくらい信頼できます。メール問題を解決するためにプラットフォームを移動するのは、インジケータライトが切れたために車を交換するようなものです。より広い問題に興味がある場合は、WordPressを離れることについての記事と代替案のまとめがありますが、どちらも急ぐ理由ではありません。
FAQ
SMTPテストメールは機能しますが、フォームはまだ送信されません。なぜですか?
つまり、メールはサイトから問題なく出ているため、障害はフォームとwp_mail()の間のどこかにあります。フォーラムユーザーはこれを報告しています。あるユーザーはSMTPテストメールは問題なかったがフォームは送信されず、キャプチャを削除しても役に立たなかったと言いました。別のユーザーは、WP Mail SMTPを通じてメールをルーティング後、他のメールは機能しましたがContact Form 7は3つのフォームで配信されず、プラグイン作成者の最初の質問はフォームがサイト上のどこにあるかについてでした。2026年5月のスレッドを参照してください。分離ステップに従います。デフォルトテーム、他のプラグインをオフ、キャッシュをクリアします。
WP Mail SMTP Proが必要ですか?
いいえ、配信を修正するためには必要ありません。無料プラグインが送信を行います。Proは、メールログ、再送信、アラート、バックアップ接続を追加する別の有料プラグインです。失敗の記録が必要な場合は検討する価値がありますが、送信用のデータベースアドオンもリード損失のリスクもカバーしています。
フォームは更新直後に停止しました。PHPが原因の可能性はありますか?
可能性があります。プラグインリストには、バージョン6.2.3の要件としてPHP 8.3以上が表示されます。リスティングの2人のレビュアーは、最小値がバージョン6.2のPHP 7.4から8.3に上昇したと述べており、1人はPHP 8.0を実行していたサイトを壊した自動更新を報告しています。これらはユーザーレポートであり、保守者のステートメントではありません。ホスティングコントロールパネルでPHAのバージョンを確認し、何かを更新する前にバックアップを作成してください。
最も有用な事実:Contact Form 7はメールをWordPressに渡し、WordPressはデフォルトでPHP mailを通じて認証されていないで送信するため、認証済みSMTPと正しいDNSレコードが通常のケースを修正します。最も鋭い警告は、メールだけでは決して記録ではないため、各送信も保存する必要があります。修正が機能しない場合は、メールサーバーではなく、フォームの環境を疑ってください。
