Contact Form 7で迷惑営業メールの対策をする方法
前回の記事でMW WP Formの迷惑営業メール対策を紹介させていただいたところ、思いの外たくさんの反響をいただきました。
参考
同時に、
「Contact Form 7の場合はどうすれば良い?」
「Contact Form 7で同じことはできないの?」
などのお問い合わせも多数いただきましたので、改めて記事にしてみました。
前提条件
Contact Form 7を使用している
ショートコードベースで難しい知識がなくてもフォームが作成できるContact Form 7は、グローバルのWordPressユーザーから絶大に支持されているプラグインです。
今回はこちらのプラグインを利用したフォームでの対策例をご紹介させていただきます。
営業メールはドメイン単位で拒否する
他のサイトの記事ではやはりNGワード設定やreCAPTCHAを使った対策を紹介されていますが、今回は「営業メール」に特化した対応方法ですので、MW WP Formの時と同様に頻繁にフォームから営業文を送ってくるドメインを抽出し、対策をしていきます。
それでは具体的な手順を見ていきましょう。
拒否するドメインのリストを作成
アドオンを使用して問い合わせデータをデータベースに保存していない場合には少し骨が折れる作業かもしれませんが、こちらが対策の第一歩です。
「もうメールも削除しちゃったよ」
という場合には、今後の対策のためにもデータベースに蓄積していくようにすると良いかもしれません。
CRMなどに連携して管理されている方であれば非常に簡単に抽出できると思います。
リストアップが完了したら、WordPressのオプションページなどを利用して拒否するドメインのリストを設定できるフィールドを作成し、こちらにドメインを登録していきます。
Contact Form 7の設定
今回はContact Form 7のカスタムバリデーションを使用し、入力されたメールアドレスがNGドメインリストに登録されたドメインを含んでいるかどうかをチェックします。
この設定は管理画面から行うことができませんので、テーマのfunctions.phpやカスタム関数を定義しているファイル内で下記のコードを設定します。
Contact Form 7のフィルターフックは、開発者である三好隆之さんの公式サイトに詳しく書かれています。
function intactis_wpcf7_validate( $result, $tags ) {
foreach ( $tags as $tag ) {
$name = $tag['name'];
if ( $name == 'your-email' )
{
$spam_domain_list = [
/* ここにNGドメインの配列を渡す */
];
$email = $_POST[ $name ];
$filtered = filter_var( $email, FILTER_VALIDATE_EMAIL);
if ( !empty($filtered ) )
{
if ( preg_match('/\A(?.+)@(?[^@]+)\z/u', $filtered, $matches) )
{
if ( in_array( $matches['domain'], $spam_domain_list ) )
{
$result->invalidate( $name, 'ご入力のメールアドレスは現在ご利用いただけません' );
}
}
}
}
}
return $result;
}
add_filter( 'wpcf7_validate', 'intactis_wpcf7_validate', 11, 2 );
参考:Contact Form 7 / DEVELOPER’S COOKBOOK
基本的な対応方法はMW WP Formの時とほぼ同じですが、上記のフックを使用すると送信ボタンを押したときに設定したエラーメッセージが表示されます。
実際の表示をみてみましょう
お問い合わせフォームのメールアドレスに禁止ドメインを含むメールアドレスを入力すると...
無事にエラーメッセージが表示されました。
フォームのお悩みがあればご相談ください
いかがだったでしょうか?
弊社のお問い合わせフォームは年間500件ほどのお問い合わせをいただきますが、実際営業目的のメールが8割以上という感じです。
弊社よりも日々お問い合わせの多い企業様であれば、届いたメールを一読し、処理をするのも毎日のことになれば地味に業務効率を悪化させる要因になりますよね。
今回ご紹介させていただいた方法以外にも様々なカスタマイズに対応可能ですので、WordPressに設置したフォームでお困りのことがありましたら、是非お気軽にご相談ください。