
WordPressのお問い合わせフォームでよく使われる「Contact Form 7」。送信ボタンを押したら「メッセージの送信に失敗しました。後でまたお試しください。」と表示されて、送れなくなったことはありませんか?
実はこのメッセージ、日本語の初期設定では 「メールの送信に失敗した」ときと「スパム(迷惑な送信)と判定された」ときで、まったく同じ文言 が表示されます。原因がちがうのに見た目が同じなので、どこを直せばいいのか迷いやすいのです。
この記事では、Cruwが自社サイトで新しく作ったお見積もりフォームで実際に起きた「スパム判定で送れない」不具合をもとに、原因の見分け方と直し方を紹介します。
この記事でわかること
- 「送信に失敗しました」が、メール送信の失敗かスパム判定かを見分ける方法
- スパム判定になる主な原因(reCAPTCHAなど)と確認ポイント
- Cruwで実際に起きた原因と、直したコード
目次
結論:まず「メール送信の失敗」か「スパム判定」かを見分ける
「メッセージの送信に失敗しました」の原因は、大きく次の2つです。
| 状態(status) | 意味 | 主な原因 |
|---|---|---|
| mail_failed | メールを送る処理に失敗した | サーバーのメール送信の設定、送信元アドレス、SMTPの設定など |
| spam | 送信内容がスパムと判定された | reCAPTCHAの確認に失敗、ページの古いキャッシュ、禁止ワード、Akismetなど |
どちらなのかは、ブラウザの開発者ツールで、送信したときの通信の結果を見るとわかります。status が spam なら、メールの設定をいくら見直しても直りません。スパム判定の原因を探しましょう。
「送信に失敗しました」の原因を見分ける方法
方法1:ブラウザの開発者ツールで status を見る
いちばん確実な方法です。Google Chromeの場合の手順です。
- フォームのページを開き、右クリック →「検証」で開発者ツールを開く
- 「ネットワーク(Network)」タブを選ぶ
- フォームに入力して送信する
- 一覧に出てくる「feedback」という通信をクリックし、「レスポンス(Response)」を見る
次のような内容が表示されます。Cruwで実際に起きたときの結果です。
{
"contact_form_id": 15041,
"status": "spam",
"message": "メッセージの送信に失敗しました。後でまたお試しください。",
"invalid_fields": []
}status が「spam」なので、メールの送信ではなく、スパム判定で止まっていることがわかります。メールの送信に失敗している場合は「mail_failed」と表示されます。
方法2:Flamingoでスパムの理由を見る
Contact Form 7の開発元が作っている「Flamingo」というプラグインを入れていると、スパムと判定された送信も保存されます。管理画面の「Flamingo」→「受信メッセージ」で、スパムに分類されたメッセージを開くと、なぜスパムと判定されたのか の理由も確認できます。
たとえば、reCAPTCHAが原因の場合は、次のような理由が記録されます。
- reCAPTCHA response token is empty.(reCAPTCHAの確認用の文字列が空だった)
- reCAPTCHA score (0.10) is lower than the threshold (0.50).(reCAPTCHAの点数が基準より低かった)
方法3:エラーメッセージの文言を変えておく
管理画面の「お問い合わせ」→ フォームの編集 →「メッセージ」タブでは、状況ごとの文言を変えられます。「送信がスパムと判定された」の文言を少し変えておくと、画面を見ただけでどちらの原因かがわかるようになります。
スパム判定になる主な原因と確認ポイント
1. reCAPTCHAのスクリプトが読み込まれていない(Cruwの事例)
Contact Form 7に reCAPTCHA(Googleの迷惑な送信対策)を設定していると、送信のたびに「人間が操作しているか」を確かめます。ページで読み込んだGoogleのスクリプトが確認用の文字列(トークン)を作り、フォームと一緒に送ります。
このスクリプトが読み込まれていないと、確認用の文字列が空のまま送られ、どんなにふつうに入力してもスパムと判定されます。
確認するには、フォームのページのソースを表示して、次の文字列があるか探します。
recaptcha/api.js(Googleのスクリプト)_wpcf7_recaptcha_response(確認用の文字列を入れる欄)
確認用の欄はあるのに、recaptcha/api.js が見つからない場合は、何かがスクリプトの読み込みを止めています。
2. ページのキャッシュが古い
Contact Form 7は、送信が正しいページから行われたかを確かめるための情報をフォームに入れています。キャッシュ系のプラグインで古いページが表示され続けていると、この情報が古くなり、スパムと判定されることがあります。キャッシュを削除してから、もう一度試してみましょう。
3. 禁止ワード・Akismet
WordPressの「設定」→「ディスカッション」にある「コメント内で許可されないキーワード」に登録した言葉が送信内容に含まれていると、Contact Form 7でもスパムと判定されます。Akismetと連携している場合は、Akismetの判定でスパムになることもあります。
4. reCAPTCHAの点数が低い
reCAPTCHA v3は、操作の様子から0.0〜1.0の点数を付け、Contact Form 7は初期設定で 0.5より低いとスパム と判定します。VPNを使っている、短時間に何度も送信している、といった場合に点数が下がることがあります。
Cruwで実際に起きた原因:表示を軽くするための処理
Cruwでは、2026年9月にシステム開発用のお見積もりフォーム(新しいページ)を作ったところ、テスト送信がすべてスパムと判定されました。
調べてみると、テーマの functions.php に、次のような処理が入っていました。reCAPTCHAのスクリプトは少し重いため、フォームのないページでは読み込まないようにして、表示を速くする ための、よく使われる工夫です。
add_action( 'wp_enqueue_scripts', function () {
$post = get_post();
if ( ! $post ) {
return;
}
// フォームのあるページでは、いつも読み込む
if ( is_page( array( 'contact', 'estimate', 'recruit' ) ) ) {
return;
}
// 本文に Contact Form 7 のショートコードがなければ、reCAPTCHA を読み込まない
if ( ! has_shortcode( $post->post_content, 'contact-form-7' ) ) {
wp_deregister_script( 'google-recaptcha' );
wp_deregister_script( 'wpcf7-recaptcha' );
}
}, 100 );新しいお見積もりページは、フォームを本文ではなくテンプレート(PHPファイル)の中で表示していました。そのため「本文にショートコードがない」と判断されてスクリプトが外され、さらに例外のページの一覧にも入っていませんでした。
表示を軽くするための処理が、新しいフォームのページでreCAPTCHAを止めてしまっていた のが原因です。
直し方
例外のページの一覧に、新しいページを追加しました。
// テンプレートでフォームを出しているページでは、いつも reCAPTCHA を読み込む
if ( is_page( array( 'contact', 'estimate', 'estimate-system', 'recruit' ) ) ) {
return;
}修正後は、ページに recaptcha/api.js が読み込まれるようになり、問題なく送信できるようになりました。
同じことを防ぐために
ページの名前を一覧で書く方法は、ページを増やすたびに追加を忘れやすいのが弱点です。フォームを置くページが多いサイトでは、次のような方法も検討するとよいでしょう。
- フォームのあるページのテンプレートに目印(カスタムフィールドなど)を付け、目印のあるページでは読み込む
- フォームのページを作ったら、必ず一度テスト送信して、受信メールと自動返信メールが届くことを確かめる 手順を決めておく
特に2つ目は、どんな原因でも気づけるいちばん確実な方法です。
よくある質問
reCAPTCHAをやめれば、送信できるようになりますか?
送信できるようにはなりますが、おすすめしません。reCAPTCHAを外すと、ロボットによる迷惑な送信が届きやすくなります。原因(スクリプトが読み込まれていない、キャッシュが古いなど)を直して、reCAPTCHAは使い続けましょう。
status が mail_failed のときは、何を確認すればいいですか?
メールを送る仕組みの問題です。送信元のメールアドレスがサイトと同じドメインになっているか、サーバーのメール送信の設定やSMTPのプラグイン(WP Mail SMTPなど)の設定が正しいかを確認しましょう。
一部の人だけ送信できないと言われました
reCAPTCHAの点数が低くなる環境(VPNや、特殊なブラウザの設定など)からの送信が、スパムと判定されている可能性があります。Flamingoでスパムの理由を確認し、点数が原因であれば、電話など別の連絡方法も案内しておくと安心です。
まとめ
- Contact Form 7の「メッセージの送信に失敗しました」は、メール送信の失敗 と スパム判定 で同じ文言になる。まず開発者ツールで status を見て、どちらかを見分ける
- スパム判定の場合は、reCAPTCHAのスクリプトが読み込まれているか、キャッシュが古くないか、禁止ワードやAkismetの判定を確認する
- Cruwの事例では、表示を軽くするためにreCAPTCHAを外す処理が、新しいフォームのページにも効いてしまっていた。フォームを作ったら、必ずテスト送信で確かめる
「フォームから問い合わせが届いていないかもしれない」「WordPressのサイトの不具合を調べてほしい」といったご相談も承っています。長野県上田市のCruwまで、お問い合わせからお気軽にご相談ください。ホームページの制作や運用については、ホームページ制作のページでも紹介しています。


