Contact Form 7で特定のIPアドレスからのメール送信をブロックする

Contact Form 7では特別なメールタグを使うと、IPアドレスや送信日時、ページタイトルなどを取得することができます。それを活用して特定の端末(IPアドレス)からのメール送信を禁止する方法を紹介します。

Contact Form 7でIPアドレスを取得するタグ

Contact Form 7では次のようなタグを使ってIPアドレスなどを取得できます。

項目 タグ
IPアドレス [_remote_ip]
ページタイトル [_post_title]
URL(パーマリンク) [_post_url]
送信日 [_date][_time]
送信時刻 [_time]

詳しくは以下のページも参考にしてください。

Contact Form 7の特別なメールタグ

これらのタグを活用して特定のIPアドレスからのメール送信をブロックすることができます。以下、手順を紹介します。

IPアドレスをメール本文に含める

ユーザーから送信されたメールに、送信元のIPアドレスを含めるように設定します。それには、上記のタグをContact Form 7の設定画面(「お問い合わせ」‐「コンタクトフォーム」メニューの編集画面)で編集する「メール」タブの本文に入力します。組み立てるタグの例は次のようになります。

IPアドレス:[_remote_ip]
ページタイトル:[_post_title]
URL:[_post_url]
送信日時:[_date][_time]

ここではIPアドレスのみが必須ですが、参考までに他の項目も含めてみました。

コンタクトフォームの編集画面に入力したイメージは次のようになります。

メールタグを追加したイメージ

言うまでもありませんが、これらのタグは入力項目ではないので、問い合わせフォーム自体には表示されませんが、管理者あてに送信されたメール本文には次のような内容(IPアドレス、ページタイトル、URL、送信日時)が追加されます。

メール本文にIPアドレスなどが入ってくる

特定のIPアドレスからのメール送信をブロック

そのIPアドレスからのメール送信を禁止したい場合は、「設定」‐「ディスカッション」メニューの「コメントブラックリスト」にIPアドレスを入力します。

ブロックしたいIPアドレスを指定する

「変更を保存」ボタンをクリックすると設定完了です。

ブロック対象の端末(IPアドレス)からメールを送信すると、次のようなメッセージが表示されてメールを送信できなくなります。

ブロックしたIPアドレスからメール送信できない

エラーメッセージを変更するには

エラーメッセージを変更するには、コンタクトフォームの編集画面で「メッセージ」タブを開いて「送信がスパムと見なされた」のメッセージを編集します。

エラーメッセージの変更

コンパクトなエラーメッセージにすることもできます。

エラーメッセージの変更イメージ

エラーメッセージを非表示にするには

ブロックしたメールについてエラーメッセージを非表示にするには次のようなCSSを子テーマのstyle.cssなどに入力します。

/* ブロックしたメールのメッセージを非表示に */
div.wpcf7-spam-blocked {
    display: none !important;
}

これにより、メール送信がブロックされた場合は何もメッセージが表示されなくなります。