ContactForm7に届く外国語のスパムメールを完全にシャットアウトする方法

目次

朝起きてみると・・・

本日の話題は税務とは全く関係のないものとなりますので、ご興味のない方は読み飛ばしてくださいませ。。

弊所のホームページはWordpressというツールを使って自作したものですが、皆様からお問い合わせを頂くフォームは「ContactForm7」というプラグインを設置して利用しています。大変手軽で便利なプラグインなので、初めてホームページを作成したときから設置していますが、お問い合わせ以外にも、業者の営業メールや海外からの意味不明なスパムメールなど、文字通りとても迷惑なメールも送られてきます。

迷惑メール対策を施しているので、ある程度はブロックされますが、これもいたちごっこで次から次へとブロックをかいくぐってやってくることになります。

そんな中、事件が起こりました。

朝起きてみると、弊所のメール受信フォルダの件数が5千件を超えていました!

恐る恐る最後の1通をクリックしてプレビューを見てみると、全文英語のスパムメール。内容は「あなたの素晴らしいカンパニーを全力でコンサルティングしたい!株式公開を最速でサポート!」的なものでした。

「うちの事務所はIPOを目指してたんや…」と意味不明なことをつぶやいている間にも、スパムメールはどんどん受信されていきます。その間なんと5秒!ということは7~8時間前から5秒毎にメールを受信していたのかと驚愕してしまいました。

まずは落ち着け。Google先生に相談だ。

「CotactForm7に届く日本語以外のメールを完全にブロックする方法」

すると、以下のサイトがヒットしました。

参考にさせていただきました。ありがとうございます!

functions.phpに直接コードを記述

ContactForm7プラグインを使用したメールフォームで利用できるスパム対策はたくさんあるようですが、コードをコピペして貼り付けるだけでOKという手軽さに惹かれましたので、これを採用することにしました。

詳しくは先程のサイトを参照していただけたらと思いますが、要点だけ転載させていただくと、Wordpressで使用しているテーマ(弊所は”SWELL”というテーマを使っています)のテーマファイルエディタから「テーマのための関数(functions.php)」を選択し、コードの最後尾に以下のコードをコピペして貼り付けるだけとなります。

//textareaに「ひらがな」を含まなければ送信できないようにする。
function wpcf7_validation_textarea_hiragana($result, $tag)
{
    $name = $tag['name'];
    $value = (isset($_POST[$name])) ? (string) $_POST[$name] : '';
 
    if ($value !== '' && !preg_match('/[ぁ-ん]/u', $value)) {
        $result['valid'] = false;
        $result['reason'] = array($name => '送信できません。');
    }
 
    return $result;
}
add_filter('wpcf7_validate_textarea', 'wpcf7_validation_textarea_hiragana', 10, 2);
add_filter('wpcf7_validate_textarea*', 'wpcf7_validation_textarea_hiragana', 10, 2);

さて、検証してみましょう。

本文中に日本語のひらがなが1文字でもなければ、上記のようなエラーメッセージが出て送信できなくなりました。

結果は・・・

上記対応後は英文のみのメールは一切届かなくなりました。

ただし海外との取引が日常的に発生する方がこれをやってしまうと、スパムではない正常な英文メールもブロックされてしまいます。弊所のように日本語を日常的に使うお客様のみと取引している場合であれば、とても有力な対策になると思いますので、同様の問題でお困りの方は、自己責任にはなりますが一度試してみてくださいませ。

目次