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では、フォームタグと対応しないメールタグは入力内容に置き換わりません。メール本文にタグ文字列がそのまま出る、または必要な情報が空になる場合は、ここが原因です。
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設定、保存プラグインの有無をメモしておくと、次に同じ相談が来たときにかなり楽になります。

