どうも、こんにちわ。引きこもりWebエンジニアのみなみさんです。
久しぶりに頭を悩ませたトラブルに遭遇したので、備忘録として色々と残しておこうと思います。
Internet Exolorerでお問い合わせメールが送れない
当ブログにて、Internet Explorerからメールが一切送れないという現象が発生していました。
状況としては、
- 他のブラウザからのメール送信は問題なく実行出来る。
- Internet Explorerからのみ「メッセージの送信に失敗しました。後でまだお試しください。」というエラーが出て送信が失敗に終わる。
という状況でした。
当ブログの訪問者の中で、IEを使用している割合は0.4%程度で、お問い合わせフォーム自体もほぼ利用されることはないのですが、それでも送れない環境があるというのはよろしくはありません。
また、お客さまの案件で同様のことが起きてしまっても困るので、放置する訳にもな…ということで調べてみました。
エラーの内容について
Contact Form 7において、エラー表示される際の内容については枠線の色が重要なポイントになります。
公式サイトのFAQによると、
- オレンジ → スパムメールである。
- 赤 → メール送信トラブル
であるようです。
今回はオレンジの枠線でエラーメッセージが表示されましたので、スパムメールであると判断されたようでした。
Flamingoを用いてスパムな理由を探る
とりあえず、なぜスパム判定されているのかを確認することにしました。
公式サイトの記事に、Flamingoプラグインを使用することでスパム判定された理由を確認出来るとありますので、そちらから試してみます。

Flamingoは、Contact Form 7において受信したメッセージを保存するためのプラグインです。
WordPressの管理画面上で受信メッセージを確認することが出来、そこにスパムメールもスパムという分類で保存され、詳細を確認することが出来ます。
なので、Flamingoを新たに導入してテストメールを送信し、内容を確認してみます。
こちらがその内容。
reCAPTCHAの応答トークンが空だから、スパムメール判定を受けたということになりますね。
公式サイトのFAQによれば「作りがいい加減なテーマが原因」とのことで。
何でも「wp_footer()」を不適切に省略したサイトが云々……ということなのですが、wp_footerを適切に省略していない場合ってreCAPTCHAラベルも正常に表示されないような気がしなくもなかったり。←
ともあれ、当ブログはCocoonを利用して子テーマでレイアウトを変更しているに過ぎない為、作り云々ではないと思われたので、こちらの公式の見解は余り参考になりませんでした。残念。
解決法
この現象は、確実な原因がはっきりとはしませんでしたが、色々な解決法が提示されているようです。
以下は、私が試した順です。
reCAPTCHA v3のキーを再取得する
reCAPTCHA v3のサイトキーとシークレットキーを、再度取得し直して設定してみるという方法です。
これで解決する人も、かなりいるようです。私はだめでした。
手軽な方法なので、まず試してみてもいいかもしれません。
Contact Form 7を一旦削除して再インストール
Contact Form 7プラグインを一旦削除して、再度インストールします。
これで解決するケースもあるようです。こちらも私はだめでした。
Javascriptの非同期読み込みをOFFにしてみる
いずれかの手法でJavascriptの非同期読み込みを設定していた場合、reCAPTCHAのjsが動作しないために正常な判定が出来ないというケースがあるようです。
こちらに関しては、私は特に非同期読み込みをOFFにしてはいませんでしたので、無関係でしたが、念の為どこかに設定されていないかを確認しました。やっぱり設定されていなかったので、この方法は使えませんでした。
参考記事:reCaptcha V3】Contact form 7 5.1.1でメール送信不可【全てスパム判定】
非同期読み込みをOFFにしてみる場合は、上記サイトが参考になるかと思います。
Contact Form 7のバージョンを5.1.0にダウングレードする
この方法も一般的ではあるようです。
Contact Form 7でこういった現象が出るようになったのは、バージョン5.1.1以降の話だそうです。
5.1.1のリリースでスパム判定が厳しくなったため、時にこのような「スパムメールではないのにスパム判定されてしまう」という事象が出るようになったようですね。
なので、判定が厳しくなる前の5.1.0というバージョンをインストールし直すことで事象を避けるという方法です。
以前のバージョンは上記リンクからダウンロード出来ますので、そちらを使用して入れ直してみるのは方法のひとつとしてありそうです。
ですが、スパム対策としては何というか元も子もない状態のような……。
ので、今回はちょっとこちらは見送り。念の為、テスト環境でやってみましたけど、解決はしませんでしたが。
reCAPTCHA v3の設定を他のプラグインに任せる
Contact Form 7ではインテグレーションで手軽にreCAPTCHA v3の設定を行なうことが出来ます。
が、敢えてそちらを別なプラグインに任せるという方法です。
今回は「Invisible reCAPTCHA for WordPress」を利用し、reCAPTCHA v3の設定を分けることにしてみました。
Invisible reCAPTCHA for WordPressプラグインを追加し、設定画面でサイトキーとシークレットキーを入力した後、問い合わせフォームメニューから「Contact Form 7の保護を有効化」にチェックを入れるだけで設定は完了します。
Contact Form 7のインテグレーションからreCAPTCHAの設定を削除する必要もあります。
結果としては、この方法で無事に現象は解決しました。
Internet Explorerからのメールは正常に送信され、スパムとして判定されることもなく、きちんと受信まで行なうことが出来ました。

何かもう、ホッとしたよね……。
まとめ
Contact Form 7 + Google reCAPTCHA v3での送信メッセージが全スパム扱いという現象は、割とよく出ている現象のようです。
調べてみた限りではハッキリとした原因が分かってはいないみたいなのですが、こちらに関しては恐らくどうにもならないのではないか……というような気がしています。
ただ、今回は、世の中でよく知られている現象とは異なり、Internet Explorerのみで現象が発生していたので、本当によく分かりませんでした。
全てのブラウザで現象が発生している、というのが世の中でよく知られている現象のようですので。
実際、対応しながらも「これが原因だったら、全ブラウザで現象出るよなーあ……」と思いながら対応していましたし。←
いろいろ試してみましたが、最終的にはContact Form 7プラグインからreCAPTCHAの設定を引っ剥がすという方法で上手くいきましたので、今後は可能であればそのように構成を最初から考えておいた方が良いのかも、と思いました。思わぬ事象が、別途発生する可能性も否定出来ないので。

商業用サイトでお問い合わせが使えないってのは、致命的な損失になってしまいますから。
もしお客さまに相談して可能そうだったら、有償でコンタクトフォームのプラグインを選択するというのも選択肢として考えておいた方が良いのかもしれませんね。
Contact Form 7はとても便利で助かるプラグインではありますが、やはり無料である分、こういった時にサポートは期待出来ませんし、思わぬことが起きても仕方ないという部分がありますから。商業サイトの重要なフォームには、有料で考えた方が良いのかもなぁ。とか思いました。はい。
参考にしたサイト
調べていく中で参考にしたサイトとか、参考にはならなかったけれど近いケースを扱っているサイトとかです。
どうしても解決しないようであれば、リンク先のサイトさんを参考にしてみると良いかもしれません。




