本文へ移動
Column コラム

迷惑な営業メールにサヨナラする! AIが迷惑な営業メールかどうかを判定して遮断するメールフォームの作り方!

※本記事で紹介するのは送信時にAIを使って営業メールを判断するものです。 どうせAIを使うなら、運用コスト的には一度メールを受信したあとにローカル環境のLLMで営業メールを消すほうがコスト的には合理的です。 この記事は、メールの送信者に「迷惑です」と意思表示したい方向けの1つのアイディアとして共有させて頂きます。

この記事の目次

迷惑な営業メールにサヨナラしたい!

こんにちは。 皆さんは会社のお問い合わせフォームから届く「営業メール」が業務の効率を悪くしていると感じたことはありませんか?
すは「お客様からのお問い合わせか」と思って開くと営業メール・・・。 一度や二度ならまだしも、毎日のように送られてくると、正直辛くなってきますよね。 でも大丈夫。 令和の時代にはAIがあります。 人間の代わりにAIに判定させて、そもそもメールが届かないようにしちゃいましょう。 今回、国産の人気CMS「baserCMS5」を使ったAIメールフォームを作る方法をご紹介します。

1. 現在の「営業メール」の問題点と「迷惑メール防止法(迷惑メール防止法)」

1-1. そもそも何故こんなに営業メールがくるのか。

実は日本では「迷惑メール防止法(迷惑メール防止法)」という法律が存在しています。 相手の事前承諾なく広告宣伝メール(もちろん営業や勧誘を含みます)を送信してはいけないのです。

ただし、この法律には重大な抜け穴が・・・。 この法律では、ホームページで公表している団体・営業を営む個人のメールアドレス宛への送信は、原則として規制の例外とされているのです。 つまり、サイト上にメールアドレスを

開している会社には、事前承諾なしの広告宣伝メールでも、直ちに違法とは言い切れない場合があり、この理屈からサイト上に公開されているメールフォームを使って広告宣伝メールが送られてきているようです。
(ついでにいうと、あくまでも「メールフォームへの入力&送信」であって「メール」そのものでないというのも業者の言い訳になっているかも知れません)

※ 法律の詳細については当社でお答えすることが出来ませんので、お近くの専門家や迷惑メール相談センター(総務省から委託をうけた社団)にお問い合わせください。

1-2. お問い合わせフォームに「お断り」を書いても送信されてしまう。

このような法律があるならばと「事前同意はしないし、ここに書いた内容はメールとして送信される」と明記するものの、そこまでなかなか見てくれていないのか、どうしても営業メールが届いてしまいます。 いずれは法律が実情に追いついてくるのではと期待する一方で、何とかできるなら早めに対処してしまいたいのが正直なところです。

そこで「AIを使って営業メールはそもそも送信させない」という令和時代(?)のメールフォームを実現しましたので、共有したいと思います。

2. OpenAI(ChatGPT)のAPIキーを取得する

今回は迷惑メールの判定をOpenAIのgptを使って行わせるため、APIキーを取得しておきます。 ここで取得したAPIキーは、後ほどCMSの管理画面で利用します。 APIキーの取得方法については、それこそAIに聞くと丁寧に教えてくれます。

3. プラグインをダウンロードしてbaserCMS5にインストールする

3-1. 開発時の環境

このプラグインを作った時の環境はbaserCMS公式のDocker環境で、

  • baserCMS 5.1.9
  • PHP 8.1
  • MySQL 8.0

という状況でした。 baserマーケットに公開するほど試験できてないので、「こんなアイディアもあるよ」というつもりでオープンソース(MIT)として公開します。
ダウンロードはこちらから

3-2. プラグインの管理画面でセットアップする

baserCMSのプラグイン管理画面から「BcSalesMailBlocker(営業メールAIブロック)」をインストール(有効化)すると、下図のような設定画面へのリンクが出来上がると思います。

スクリーンショット 2026-05-15 12.46.32.png

設定画面に入ると、最初にOpenAIのAPIキーを入れる場所がでてきます。 ここに先ほど取得したAPIキーを入力してください。

スクリーンショット 2026-05-16 10.33.49.png

また「ブロック閾値」は「これは完全に営業メールとAIが判断=10点」としたときに、どこまで怪しいメールを弾くかという設定です。 ここを「8」とすれば、8点以上のメールがとまります。
個人的な肌感覚ですが、gpt系のLLMは文章の読解が優秀なので、かなり正確に営業メールかどうかを判断できています。 一応「8点」ではじめていけば良さそうです。 be (後述するように弾いた送信についてはログが残りますので、時々覗いてみると良さそうです)

「APIエラー時の挙動」ですが、API側が使えない状態の場合にどのように振る舞うかという設定です。 OpenAIのAPI利用についてトークンが上限に達したような場合、AI判定をせずに「通常送信」を行うかどうかを設定します。
送信を止めてしまうと、本当のお客様からのメールも送信されなくなるので、ここは「通常送信を許可する」というような設定で良いでしょう。

なお、baserCMS5ではメールフォームをいくつも持つことができますので、「メールフォーム毎にこの機能を有効にするかどうか」を選択できます。
だいたい営業メールが送信されるのは汎用的な「お問い合わせ」フォームだと思いますので、そこだけ有効にすればよさそうです。

3-3. ログについて

このプラグインのログは下記に保存されます。

(baserCMS5の設置フォルダ)/logs/bc_sales_mail_blocker.log

時々、内容を確認して必要であればブロック閾値を変更しても良いかも知れません。
(なお、本プラグインではテキストエリアに書かれた文章をAIが判断しています。 一行テキストなどは対象外です。 お問い合わせフォームで使う一行テキストには、個人名、メールアドレス、住所などが入ることが多いと思いますのでAIに送らないようにしています。 ログにも残りません。 必要であればプラグインを調整してください。 )

4. 個人情報保護方針に明記する

このプラグインではテキストエリアに書かれた内容をAIに送信します。 名前や住所などで使われやすい1行テキストの入力欄は送信しませんが、お問い合わせ本文(テキストエリア)に入力されることもあると思いますし、そもそもメールフォームにそのような処理(外部サービスを利用するような処理)が入っていることは明記すべきと思います。 そこで、個人情報保護の「利用目的」の項目や、「外部サービスの利用」のような項目にAIを利用することを明記したうえ、送信フォームの個人情報保護方針への同意チェック部分にも、AI利用を明記することを明記して同意を求めると問題が起きにくいと思います。

スクリーンショット 2026-05-16 13.43.00.png

5. まとめ

いかがでしたでしょうか? 実際には同じAIを使うのであれば、ローカル環境にLLMを入れて「受信し終わったメールに対して営業メールかどうかを判断する」方がコスト的には合理的だと思います。
そのうちパソコンのメールアプリが対応するようになるとも思いますし、受信サーバーにこうした機能を持つこともあるかも知れませんが、送信者に対して「迷惑です」と一言物申したいという方に向けて、一つのアイディアとしてこのプラグインを共有しておきます。

ヒニアラタ編集部 監修: 馬庭 吾以千

ヒニアラタ編集部では地方の中小企業様のWeb活用をお手伝いするため、私たちが持っている専門知識を「コラム」という形で分かりやすく公開しています。 私たち自身が地方の企業であるからこそ分かること、感じることがあると思っています。

一覧に戻る