根本的な解決とはいえませんが、原因が掴めたので紹介します。
この記事の目次
ContactForm7が動かない!?
私はプロのWebデザイナーではありませんが、ときおりサイト制作を依頼されます。
一昨年あたりからWordPressを使うようになり、メールフォームの作成にはもっぱらContactForm7という定番プラグインを使ってきました。
2020年末にもContactForm7を使ったフォームを設置したばかりで問題なく使えていたのですが、いま作っているサイトではなぜかメールの送信ができません。
ちなみに、前回作成したサイトのホスティングサービスはさくらインターネット、現在作っているものはロリポップを利用しています。
テーマによっては動かない・・・?
調べてみたところ、使用しているWordPressテーマによっては正常に送信できないことがあるという情報を見つけたので、直前に作ったサイトと同じテーマをテスト用に入れてみましたがやはり動作しませんでした。
ちなみに、直前に作ったサイトで使用したテーマは。
今回使用しているのはです。
SMTP設定用プラグインを使ってみる
また、SMTPサーバーの設定をやらないと正常に送信できないという情報もあり、というプラグインを使ってみましたが、これでも解決しません。
ContactForm7がちゃんと動作している場合でも、フォームを増やすとふたつめからは送信ができなくなるという情報もあり、そういうケースではWP Mail SMTPや同種のプラグインを使うことで解消できるようです。
ところが、いま制作中のサイトでは別の問題が発生しました。
WP Mail SMTPをインストールすると、なんとWordPressの管理画面にログインできなくなってしまいます。
アカウントとパスワードを入力してログインを試みても反応が返ってこず、結局タイムアウトになるという現象です。
WP Mail SMTPの代わりにPost SMTP Mailerというプラグインも使ってみましたが結果は同様でした。
サイト自体のセキュリティ設定に関係があるのかもしれませんが、今回は原因究明に割いている時間がないので、この方向でのアプローチは断念します。
この現象はSiteGuard WP Pluginでログインページのアドレス変更を行っているばあいに発生するようです。
いったんSiteGuard WPを無効化した状態でWP Mail SMTPをインストールし、あらためてアドレス変更を行えば問題ありません。
迷惑メール判定に引っかかると判明
さらに調べていったところ、どうやらメールフォームを利用した迷惑メール送信を防ぐためのが関係ありそうだという情報をキャッチ。
そこで、テストで送信しようとしているフォームの内容がスパム判定されているものと仮定して、メールアドレスや文面を変えて試してみましたが、すべて拒否されてしまいます。
しかたなく、reCAPTCHAの設定をいったん削除してみると、こんどは送信できました。
これで、ContactForm7の設定やテーマに関係ないことはわかりましたが、このままではbotに悪用され放題なのでなにか対策を講じなければいけません。
フォームプラグインを換えてみる
ContactForm7にreCAPTCHAを統合すると送信できない(少なくとも今制作中のサイトでは)というところまで判ったので、フォーム作成用プラグインを変えてみることにします。
WP Mail SMTPと同じ作者のというプラグインが有名なので、こちらを使うことにしました。
ContactForm7が比較的お手軽なのに比べ、WPFromsはデザインの自由度が高く、いろんなフォームを作成するのに向いているようです。
幸い、簡単なフォームならワンクリックで作成できるボタンが用意されていたのでそれを使いました。
WPFormsの設定画面に入ると中にCAPTCHA用のタブがあります。
reCAPTCHAの設定でv3を選び、サイトキーとシークレットキーを設定します。
ちなみにreCAPTCHA v3のばあい、上記設定だけでは動作しません。
フォーム側にも「Google v3 reCAPTCHAを有効化」というチェックボックスがあり、これをオンにする必要があるようです。
実は最初これを忘れていて、サイトキーとシークレットキーを登録しただけでテストしたらフォームを送信できたのですが、このチェックボックスをオンにしたら結局送信に失敗してしまいました。
reCAPTCHAの設定を変えてみる
ContactForm7のreCAPTCHA設定はサイトキーとシークレットキーを登録するだけなのに対して、WPFormsにはバージョンの選択とスコアしきい値という項目があります。
スコアしきい値はスパムメールかどうかの判定を行っているようです。
初期値は0.4なので、これを0.3に下げてみましたがやはり送信できません。
ちなみに某ブログで見かけた情報によると、ContactForm7ではしきい値をプラグインのスクリプト内部で設定しているらしく、値は0.5だそうです。
やむをえずreCAPTCHAのバージョン自体を下げることにして、Checkbox reCAPTCHA v2にすることでようやく送信できました(Invisible reCAPTCHA v2ではだめでした)。
昔ながらの「私はロボットではありません」が表示されることになりますが、とりあえずはこれでメールフォームを運用できるところまでこぎ着けました。
WPFormsに乗り換えようと思う
reCAPTCHA v3はCAPTCHAの存在自体を意識させないのでスマートなんですが、今回はスパム判定されない条件を特定している時間がもったいないので、reCAPTCHAの設定を選べるWPFormsの方が助かります。
フォーム作成の自由度が高く、それでいてシンプルなフォームなら簡単に作れるので、今後はWPFormsの方を使っていくつもりです。
いずれはreCAPTCHA v3を使えるようにしたいし、WP Mail SMTPでログインができなくなる問題についても原因を究明したいところですが、まだ時間はかかりそうです。