WordPress のメールフォームプラグイン MW WP Form を利用しているサイトの一つで、下記のように各項目の内容が空のメールが送信される現象がありました。

お問い合わせフォームより送信されました。
------------------------------
お名前      :
メールアドレス  :
お電話番号    :
お問い合わせ内容 :
------------------------------

メールに送信元の情報を記載するようにしているので、そのIPアドレスを調べてみたら、発信元はロシアで、いくつかのスパムレポート(ブラックリスト)に載っていました。

各項目は必須項目となっていますが、そのチェックに引っ掛からずに送信されてます。恐らく、スパムボットによって直接メールフォームプログラムにアクセスして送信されているものと思われますが、その内容が、不正サイトに誘導するわけでもなく、空なのでスパム行為の意図が不明です。

でも、頻繁に空メールが送られてくるのは鬱陶しいので、対策を施してみました。

調べてみると WordPress のフォーラムで、5年以上前に同じような質問があり、その中で MW WP Form の作者の方が解決方法を書かれていました。

MW WP Form の「必須」バリデーションは、値が送信されているときに発火するようになっています。そのため、name属性を書き換えられて送信されると「必須」バリデーションは実行されずメールが送信されてしまいます。

そこで、僕は「必須(チェックボックス)」の項目を1つ追加しました。
このバリデーションは値が送信されたかどうかではなく「存在するかどうか」を判定するバリデーションです。従って、name属性が書き換えられるとその項目の値は存在しないのでエラーになる、というわけです。

MW WP Formから必須の回答部分が空白のメールが届きます | WordPress.org

確かに、MW WP Form を使ってフォームを設置しているサイトがいくつかありますが、バリデーションルールに「必須(チェックボックス)」を設定している、チェックボックスやラジオボタンの項目があるフォームでは、このような空メールは一度も来ていません。

そこで、今回は確認画面を設けていないフォームでもあることから、入力内容の確認を即す目的を兼ねて、「内容をご確認のうえ、こちらにチェックを入れてください。」という項目のチェックボックスを追加し、バリデーションルールに「必須(チェックボックス)」を設定しました。

なお、先のフォーラムによると、

「必須(チェックボックス)」となっていますが、チェックボックス以外にも使用できます(基本的にチェックボックス用という意味です)。なので、普通にお名前などのフィールドに「必須(チェックボックス)」を設定されてください。

とのことですので、既存のテキストフィールドに「必須(チェックボックス)」を設定するだけでもいいようです。そうなると、「必須」と「必須(チェックボックス)」を使い分ける必要はなく、すべて「必須(チェックボックス)」でいいような気もしますが…。