WordPress

ContactForm7でフォームメールが送れない問題

WordPressでサイトを作成していますが、メールフォームの送信がうまくできずに相当手こずってしまいました。

根本的な解決とはいえませんが、原因が掴めたので紹介します。

 

ContactForm7が動かない!?

私はプロのWebデザイナーではありませんが、ときおりサイト制作を依頼されます。

一昨年あたりからWordPressを使うようになり、メールフォームの作成にはもっぱらContactForm7という定番プラグインを使ってきました。

2020年末にもContactForm7を使ったフォームを設置したばかりで問題なく使えていたのですが、いま作っているサイトではなぜかメールの送信ができません。

ContactForm7 送信エラー

メールフォームの送信ができない

 

ちなみに、前回作成したサイトのホスティングサービスはさくらインターネット、現在作っているものはロリポップを利用しています。

 

テーマによっては動かない・・・?

調べてみたところ、使用しているWordPressテーマによっては正常に送信できないことがあるという情報を見つけたので、直前に作ったサイトと同じテーマをテスト用に入れてみましたがやはり動作しませんでした。

ちなみに、直前に作ったサイトで使用したテーマはSydney

今回使用しているのはAstraです。

 

SMTP設定用プラグインを使ってみる

また、SMTPサーバーの設定をやらないと正常に送信できないという情報もあり、WP Mail SMTPというプラグインを使ってみましたが、これでも解決しません。

ContactForm7がちゃんと動作している場合でも、フォームを増やすとふたつめからは送信ができなくなるという情報もあり、そういうケースではWP Mail SMTPや同種のプラグインを使うことで解消できるようです。

WordPress用SMTPプラグイン

WordPressのSMTP設定用プラグイン

 

 

ところが、いま制作中のサイトでは別の問題が発生しました。

WP Mail SMTPをインストールすると、なんとWordPressの管理画面にログインできなくなってしまいます

アカウントとパスワードを入力してログインを試みても反応が返ってこず、結局タイムアウトになるという現象です。

 

 

WP Mail SMTPの代わりにPost SMTP Mailerというプラグインも使ってみましたが結果は同様でした。

サイト自体のセキュリティ設定に関係があるのかもしれませんが、今回は原因究明に割いている時間がないので、この方向でのアプローチは断念します。

 

この現象はSiteGuard WP Pluginでログインページのアドレス変更を行っているばあいに発生するようです。
いったんSiteGuard WPを無効化した状態でWP Mail SMTPをインストールし、あらためてアドレス変更を行えば問題ありません。

 

 

 

 

 

迷惑メール判定に引っかかると判明

さらに調べていったところ、どうやらメールフォームを利用した迷惑メール送信を防ぐためのGoogle reCAPTCHAが関係ありそうだという情報をキャッチ。

そこで、テストで送信しようとしているフォームの内容がスパム判定されているものと仮定して、メールアドレスや文面を変えて試してみましたが、すべて拒否されてしまいます。

しかたなく、reCAPTCHAの設定をいったん削除してみると、こんどは送信できました。

reCAPTCHAの解除

reCAPTCHAの統合を解除する

 

reCAPTCHAなしで送信

reCAPTCHAなしなら送信できると判明

これで、ContactForm7の設定やテーマに関係ないことはわかりましたが、このままではbotに悪用され放題なのでなにか対策を講じなければいけません。

 

フォームプラグインを換えてみる

ContactForm7にreCAPTCHAを統合すると送信できない(少なくとも今制作中のサイトでは)というところまで判ったので、フォーム作成用プラグインを変えてみることにします。

 

WP Mail SMTPと同じ作者のWPFormsというプラグインが有名なので、こちらを使うことにしました。

 

 

ContactForm7が比較的お手軽なのに比べ、WPFromsはデザインの自由度が高く、いろんなフォームを作成するのに向いているようです。

 

 

幸い、簡単なフォームならワンクリックで作成できるボタンが用意されていたのでそれを使いました。

WPFormsプラグイン

WPFormsでシンプルなフォームを作成

 

WPFormsの設定画面に入ると中にCAPTCHA用のタブがあります。

reCAPTCHAの設定でv3を選び、サイトキーとシークレットキーを設定します。

WPForms reCAPTCHA設定

reCAPTCHAを選択する

 

WPForms reCAPTCHA サイトキーとシークレットキー

reCAPTCHAのキー設定を行う

 

 

ちなみにreCAPTCHA v3のばあい、上記設定だけでは動作しません。

フォーム側にも「Google v3 reCAPTCHAを有効化」というチェックボックスがあり、これをオンにする必要があるようです。

WPForms eCAPTCHA v3を有効化

reCAPTCHA v3を有効化する

 

実は最初これを忘れていて、サイトキーとシークレットキーを登録しただけでテストしたらフォームを送信できたのですが、このチェックボックスをオンにしたら結局送信に失敗してしまいました。

 

 

reCAPTCHAの設定を変えてみる

ContactForm7のreCAPTCHA設定はサイトキーとシークレットキーを登録するだけなのに対して、WPFormsにはバージョンの選択とスコアしきい値という項目があります。

スコアしきい値はスパムメールかどうかの判定を行っているようです。

初期値は0.4なので、これを0.3に下げてみましたがやはり送信できません。

ちなみに某ブログで見かけた情報によると、ContactForm7ではしきい値をプラグインのスクリプト内部で設定しているらしく、値は0.5だそうです。

 

やむをえずreCAPTCHAのバージョン自体を下げることにして、Checkbox reCAPTCHA v2にすることでようやく送信できました(Invisible reCAPTCHA v2ではだめでした)。

昔ながらの「私はロボットではありません」が表示されることになりますが、とりあえずはこれでメールフォームを運用できるところまでこぎ着けました。

Chackbox reCAPTCHA v2

昔ながらのチェックボックスで認証する

 

WPFormsに乗り換えようと思う

reCAPTCHA v3はCAPTCHAの存在自体を意識させないのでスマートなんですが、今回はスパム判定されない条件を特定している時間がもったいないので、reCAPTCHAの設定を選べるWPFormsの方が助かります。

フォーム作成の自由度が高く、それでいてシンプルなフォームなら簡単に作れるので、今後はWPFormsの方を使っていくつもりです。

いずれはreCAPTCHA v3を使えるようにしたいし、WP Mail SMTPでログインができなくなる問題についても原因を究明したいところですが、まだ時間はかかりそうです。

 

 

-WordPress
-, , ,