「お問い合わせフォームの送信ボタンを押したら、赤い文字で『送信に失敗しました』と出た」「ボタンを押してもくるくる回ったまま終わらない」「送信すると真っ白な画面や『アクセスが拒否されました』という画面に切り替わる」。お客様から「フォームが使えなかった」と言われて初めて気づく、というケースも少なくありません。
結論から言うと、フォーム送信後のエラーはどんな表示が出ているかで原因をかなり絞り込めます。よくある原因は次の5つです。
1. メールの送信そのものに失敗している(サーバーのメール設定・送信元アドレス)
2. 迷惑メール対策(reCAPTCHAなど)の判定で止められている
3. キャッシュの影響で、フォームの「有効期限」が切れたまま表示されている
4. ほかのプラグインやテーマとの競合で、送信の処理が途中で止まっている
5. サーバーのセキュリティ機能(WAF)が、送信内容を攻撃と誤判定している
この記事では、表示ごとの見分け方、原因別の直し方、そしてフォームを「取りこぼしのない窓口」にするための改善提案までを順番にまとめました。なお、送信は完了するのにメールだけ届かない場合は、原因が少し違います。その場合はメールの届き方(迷惑メールフォルダや送信方式)を中心に確認してください。
まず確認:どんなエラーが、どの条件で出るか
最初に、次の3点をメモしておくと原因探しが一気に早くなります。
1. 表示されている内容
・フォームの下に赤い文字で「送信に失敗しました」「後でまたお試しください」と出る
・「入力内容に問題があります」と出るが、どの項目にもエラー表示がない
・ボタンを押すと、ぐるぐる回るマークが出たまま止まる
・画面全体が「403」「Forbidden」「アクセスが拒否されました」に切り替わる
・真っ白な画面になる、または「重大なエラーが発生しました」と出る
2. いつも出るのか、たまに出るのか
毎回必ず出るなら設定や競合、特定の人・特定の時間だけ出るならキャッシュや迷惑メール対策の判定が怪しい、という目安になります。
3. 直前に何をしたか
プラグインやテーマの更新、サーバーの移転、SSL化、送信先アドレスの変更、キャッシュ系プラグインの導入などは、どれもフォームのエラーのきっかけになりやすい作業です。
あわせて、パソコンとスマホ、ログインした状態とログアウトした状態(またはシークレットウィンドウ)の両方で送信テストをしてみてください。ログイン中は送れるのに、ログアウトすると失敗する場合は、キャッシュが原因である可能性が高いです。
原因1:メールの送信そのものに失敗している
フォームプラグイン(Contact Form 7など)は、送信ボタンが押されると、まずサーバーからメールを送ろうとします。このメール送信がサーバー側で失敗すると、「送信に失敗しました」というエラーが表示されます。
よくあるのは次のようなケースです。
・送信元(From)のアドレスが、サイトと違うドメインになっている:たとえば送信元をフリーメールのアドレスにしていると、サーバーや受信側がなりすましと判断して送信を拒否することがあります。
・サーバー移転後に、メール送信の設定が引き継がれていない
・サーバー側で、PHPからのメール送信が制限されている
直し方
1. フォームの設定画面で、送信元のアドレスをサイトと同じドメインのアドレス(サイトのドメインで作ったinfoなどのアドレス)に変更します。お客様のアドレスは「返信先(Reply-To)」の欄に入れるようにします。
2. それでも失敗する場合は、SMTP送信用のプラグイン(WP Mail SMTPなど)を入れて、レンタルサーバーで作成したメールアカウント経由で送る設定に切り替えます。多くの場合、これで安定します。
3. プラグインのテスト送信機能でエラー内容が表示されたら、その文言を控えておくと原因の特定に役立ちます。
原因2:迷惑メール対策の判定で止められている
reCAPTCHA(ロボットではないことを確かめる仕組み)や、スパム対策プラグインを入れていると、その判定で送信が止められることがあります。この場合も、表示は「送信に失敗しました」になることが多く、原因1と見分けがつきにくいのが厄介な点です。
よくあるケース
・reCAPTCHAの「サイトキー」と「シークレットキー」が、今のドメインと合っていない(サーバー移転やドメイン変更、SSL化のあとに起きやすい)
・判定が厳しすぎて、普通のお客様まで迷惑メール扱いされている
・迷惑メール対策のプラグインを2つ以上入れていて、二重に判定されている
直し方
1. reCAPTCHAの管理画面で、登録しているドメインが今のサイトのドメインと一致しているか確認します。違っていれば、キーを作り直してフォームプラグインの設定に入れ直します。
2. 一時的にreCAPTCHAの連携を外して送信テストをし、送れるようになるか確かめます。送れるようになれば、原因はここで確定です。確認が終わったら、迷惑メールが増えないよう、必ず設定を戻しておきます。
3. スパム対策のプラグインが複数ある場合は、1つに絞ります。
原因3:キャッシュでフォームの「有効期限」が切れている
WordPressのフォームには、不正な送信を防ぐために「このページを開いてから一定時間内の送信だけを受け付ける」という合言葉のような仕組みが入っています。ところが、キャッシュ系のプラグインやサーバーのキャッシュが、フォームのページを丸ごと保存して長時間表示し続けると、有効期限が切れた古い合言葉のまま送信することになり、エラーになります。
「ログイン中は送れるのに、ログアウトすると失敗する」「朝は送れたのに、午後になると失敗する」といった症状は、この原因の典型です。
直し方
1. キャッシュ系プラグインの設定で、お問い合わせフォームのページ(お問い合わせ・確認画面・完了画面)をキャッシュの対象から外します。多くのプラグインに「キャッシュしないページ」を指定する欄があります。
2. サーバー側のキャッシュ機能(レンタルサーバーの管理画面にある高速化の機能)を使っている場合も、同じページを対象外にします。
3. 設定を変えたら、キャッシュを全て削除してから、ログアウトした状態で送信テストをします。
原因4:プラグインやテーマとの競合で処理が止まっている
ボタンを押すとぐるぐる回るマークが出たまま止まる場合は、送信の処理を動かしているプログラム(JavaScript)が、途中でエラーになっている可能性が高いです。ほかのプラグインやテーマの更新をきっかけに起きることがよくあります。
直し方
1. Chromeのデベロッパーツールを開き、「Console(コンソール)」タブに赤いエラーが出ていないか確認します。エラーに書かれているファイル名から、どのプラグインが関係しているかの手がかりが得られます。
2. 本番サイトでいきなり試すのが不安な場合は、まずバックアップを取ります。そのうえで、フォーム以外のプラグインを1つずつ停止し、送信テストを繰り返して原因のプラグインを特定します。
3. 表示高速化のプラグインで「JavaScriptの読み込みを遅らせる」「ファイルをまとめる」といった機能を有効にしている場合は、それが原因のことも多いです。フォームのプラグインのファイルを対象外にすると直ることがあります。
4. 送信すると真っ白な画面や「重大なエラー」が出る場合は、プラグインのPHP側でエラーが起きています。サーバーのエラーログを確認するか、直前に更新したプラグインを元のバージョンに戻して様子を見ます。
原因5:サーバーのセキュリティ機能(WAF)に止められている
送信すると画面全体が「403 Forbidden」や「アクセスが拒否されました」に切り替わる場合は、レンタルサーバーのWAF(不正アクセスを防ぐ機能)が、送信内容を攻撃と誤判定している可能性があります。お問い合わせ内容に、記号の多い文章や英語の文章、URLなどが含まれていると、誤判定されやすくなります。
直し方
1. レンタルサーバーの管理画面で、WAFの検知ログを確認します。フォームを送信した時刻に検知の記録があれば、原因はここで確定です。
2. 一時的にWAFをオフにして送信テストをし、送れることを確認します。
3. WAFを完全に切るのは危険なので、テストが終わったらすぐにオンに戻します。そのうえで、サーバーの機能で「検知した項目だけを除外する」設定をするか、サーバー会社に除外の方法を確認します。
ここまで試しても直らない場合や、「どの原因なのか見当がつかない」「本番サイトでプラグインを止めるのが怖い」という場合は、お気軽にご相談ください。表示されているエラーと直前の作業を伺ったうえで原因を特定し、送信テストで直ったことを確認してからご報告します。
ついでにできる改善提案:フォームを「取りこぼさない窓口」にする
エラーを直したら、あわせて次のような改善をしておくと、同じトラブルで問い合わせを失うリスクを減らせます。
送信内容をサイト内にも保存しておく
送信内容をWordPressの管理画面に保存するプラグイン(Contact Form 7ならFlamingoなど)を入れておくと、万が一メールが届かなかったときにも、問い合わせの内容を確認できます。「エラーは出なかったが、メールが届いていなかった」という事態にも気づきやすくなります。
エラーメッセージを、お客様に分かりやすい言葉に書き換える
初期設定のエラーメッセージは、お客様から見ると「何をすればいいのか」が分かりにくいことがあります。たとえば「送信できなかった場合は、お手数ですが時間をおいて再度お試しください。それでも送れない場合は、お電話でご連絡ください」のように、次の行動が分かる文章にしておくと、問い合わせの取りこぼしを減らせます。フォームプラグインの「メッセージ」設定から、文言を変更できます。
入力項目を見直して、途中で諦められないようにする
必須項目が多すぎたり、電話番号の書き方(ハイフンの有無など)を細かく指定しすぎていたりすると、入力エラーが続いてお客様が送信を諦めてしまいます。本当に必要な項目だけを必須にし、書き方の指定はできるだけゆるくしておくのがおすすめです。
月に1回、送信テストをする習慣をつける
フォームのエラーは、プラグインの自動更新やサーバー側の変更で、ある日突然起きることがあります。月に1回、ログアウトした状態でパソコンとスマホから送信テストをして、完了画面の表示とメールの受信を確認しておくと安心です。プラグインやテーマを更新したあとにも、あわせてテストしておきましょう。
これまでの対応について
私はWeb制作歴6年で、HP・LP・ECサイトの制作を100件以上手がけてきました。coconalaのWordPress修正サービスでは評価5.0をいただいています。フォームのエラーは、原因が1つとは限らず、キャッシュと迷惑メール対策が重なっていることもあります。修正後は、ログイン・ログアウトの両方、パソコン・スマホの両方で送信テストをしてから完了のご報告をします。作業の前に、どこまで対応できそうかを正直にお伝えします。NDA対応・本人確認済みで、お預かりしたログイン情報は作業後に削除します。平日日中は1時間以内の返信を目安に対応しています。
まとめ:表示の内容で原因を絞り込み、1つずつ確かめる
フォーム送信後のエラーは、「赤い文字で失敗と出る」ならメール送信や迷惑メール対策、「ログアウト時だけ失敗する」ならキャッシュ、「くるくる回ったまま」なら競合、「403の画面になる」ならサーバーのWAF、というように、表示と条件からかなり原因を絞り込めます。直したあとは、送信内容の保存や定期的な送信テストで、問い合わせを取りこぼさない仕組みにしておくと安心です。
「自分で試したけれど直らない」「お客様からフォームが使えないと言われて困っている」という場合は、お気軽にご相談ください。症状を伺ったうえで、対応できるかどうかを正直にお伝えします。
内容が固まっていない段階のご相談は、プロフィールからどうぞ。