コラムへ戻る
WordPress運用5

Contact Form 7のメールが届かない場合の原因と対策

Contact Form 7で送信完了になるのにメールが届かない、赤枠のエラーが出る、自動返信だけ届かない。よくある原因と確認する順番を整理します。

Contact Form 7で一番こわいのは、フォーム上では送信できたように見えるのに、管理者のメールボックスには何も届いていない状態です。問い合わせが少ないのではなく、届いていないだけだった。制作や保守をしていると、これが一番ひやっとします。まずは焦って設定を全部変える前に、どこで止まっているのかを順番に切り分けます。

Contact Form 7のメール設定を連想させるキーボード写真

まず、表示されるメッセージと枠の色を見る

メールが届かない原因確認に合うエンターキー写真

Contact Form 7は、送信時の状態によって画面に出る反応が変わります。赤枠のエラーなら、Contact Form 7がWordPressの `wp_mail()` でメール送信を試したものの失敗している可能性があります。オレンジ枠なら、スパム判定で止められている可能性があります。

一方で、緑枠の送信完了メッセージが出ているのにメールが届かない場合、Contact Form 7側では送信処理が完了していて、その後のメール配送や迷惑メール判定で止まっていることがあります。ここを分けずに触ると、原因が分からないまま設定だけが増えていきます。

  • 赤枠ならメール送信処理そのものの失敗を疑う
  • オレンジ枠ならreCAPTCHAやスパム判定を確認する
  • 緑枠なのに届かない場合は、迷惑メールやメール配送側を見る

宛先、From、メールタグのズレを確認する

最初に見るのは、Contact Form 7の「メール」タブです。Toに入っている宛先が今も使われているメールアドレスか、フォームのメールタグが本文やヘッダーで正しく使われているかを確認します。

フォーム側で項目名を変えたのに、メール本文には古い `[your-email]` や `[your-name]` が残っていることがあります。Contact Form 7では、フォームタグと対応しないメールタグは入力内容に置き換わりません。メール本文にタグ文字列がそのまま出る、または必要な情報が空になる場合は、ここが原因です。

まず見直したいMail設定例
To: info@example.com
From: サイト名 <wordpress@example.com>
Subject: [your-subject]

Additional headers:
Reply-To: [your-email]

Fromには、サイトのドメインのメールアドレスを使う

Contact Form 7の公式ドキュメントでは、Fromにはサイトと同じドメインのメールアドレスを使うことが推奨されています。たとえば `example.com` のサイトなら、`wordpress@example.com` や `noreply@example.com` のようなアドレスです。

よくある失敗は、Fromに回答者のメールアドレスをそのまま入れることです。回答者がGmailやYahooメールを入力した場合、受信側から見ると「example.comのサーバーから、gmail.comを名乗るメールが来た」ように見えます。これは迷惑メールやなりすまし判定に引っかかりやすくなります。返信先に回答者のメールを使いたい場合は、FromではなくReply-Toに入れます。

フォーム回答後の連絡確認をイメージした写真
  • Fromはサイトと同じドメインのアドレスにする
  • 回答者のメールアドレスはReply-Toに入れる
  • 存在しないFromアドレスを使っていないか確認する

GmailやGoogle Workspaceで止まる場合は認証を見る

GmailやGoogle Workspace宛に届かない場合は、フォームだけの問題ではなく、メールの認証で止まっていることがあります。Googleのヘルプでも、問い合わせフォームのメールが迷惑メール扱いや拒否になる原因として、SPF、SMTPリレー、DKIMなどの認証が挙げられています。

WordPressのサーバーからそのまま送っている場合、受信側がそのメールを信頼しにくいことがあります。WP Mail SMTPなどのSMTPプラグインを使い、Gmail、Google Workspace、SendGrid、Mailgun、Resendなどの送信基盤から送る形にすると改善することがあります。Google Workspaceを使っている会社なら、管理画面のメールログ検索で、そもそも受信側まで来ているかを見るのも有効です。

自動返信だけ届かないときはMail (2)を見る

管理者宛メールは届くのに、自動返信メールだけ届かない場合は、Mail (2)の設定を確認します。Contact Form 7のMail (2)は自動返信によく使われますが、メインのMailが正常に送信された場合にだけ送られます。

Mail (2)の宛先に、回答者のメールアドレス項目のタグが入っているかを見ます。フォーム側のメール項目が `[email user-email]` なのに、Mail (2)の宛先が `[your-email]` のままだと届きません。自動返信のFromも、サイトのドメインのアドレスにしておくほうが安全です。

  • Mail (2)が有効になっているか確認する
  • Mail (2)の宛先タグがフォーム項目名と一致しているか見る
  • 管理者宛メールが失敗している場合は、先にメインのMailを直す

送信内容を失わない仕組みを先に作る

Contact Form 7は、標準では送信された内容を保存しません。メールサーバーの問題や設定ミスがあると、問い合わせ内容を後から取り戻せないことがあります。重要な問い合わせフォームなら、Flamingoのような保存プラグインを入れるか、別の保存先を用意しておいたほうが安心です。

この点は、制作案件でも説明しておきたいところです。メールは通知であって、問い合わせデータそのものではありません。Formieでは回答を保存してからメール通知や自動返信を行うため、メール設定がない場合や送信に失敗した場合でも、回答自体を失わない設計にしています。

復旧したら、テスト送信の記録を残す

メールが届くようになったら、最後に複数の宛先でテストします。会社メール、Gmail、スマートフォンで確認するメールなど、実際に使う環境で見ます。迷惑メールフォルダに入っていないか、自動返信が届くか、本文に必要な項目が入っているかまで確認します。

制作会社やフリーランスなら、復旧時に変更したFrom、Reply-To、SMTP設定、DNS設定、保存プラグインの有無をメモしておくと、次に同じ相談が来たときにかなり楽になります。

Formie

フォームを作成する

会員登録なしで作成画面を試せます。項目を追加しながら、入力画面、確認画面、完了画面の流れをプレビューできます。

フォームを作成するイラスト