ホームページ バックエンド開発 Python チュートリアル マーケティングメールをスパムから守るための API を構築する

マーケティングメールをスパムから守るための API を構築する

Dec 23, 2024 pm 10:23 PM

電子メール マーケティング キャンペーンを実行する場合、最大の課題の 1 つは、メッセージがスパム フォルダーではなく受信トレイに確実に届くようにすることです。

Apache SpamAssassin は、メッセージをスパムとして分類するために、多くの電子メール クライアントおよび電子メール フィルタリング ツールで広く使用されているツールです。この投稿では、SpamAssassin を活用して、メールがスパムとしてマークされるかどうか、およびスパムとしてマークされる理由を検証する方法を説明します。
ロジックは API としてパッケージ化され、オンラインでデプロイされるため、ワークフローに統合できます。

Apache SpamAssassin を選ぶ理由

Apache SpamAssassin は、Apache Software Foundation によって管理されているオープンソースのスパム検出プラットフォームです。多数のルール、ベイジアン フィルタリング、およびネットワーク テストを使用して、特定の電子メールにスパムの「スコア」を割り当てます。一般に、スコア 5 以上のメールはスパムとしてフラグが立てられるリスクが高くなります。

SpamAssassin のスコアリングは透明性があり、十分に文書化されているため、電子メールのどの側面がスパム スコアの高さを引き起こしているかを正確に特定し、文章を改善するために使用することもできます。

SpamAssassin を始める

SpamAssassin は Linux システム上で実行するように設計されています。 Linux OS をインストールして実行するには、Linux OS を使用するか、Docker VM を作成する必要があります。

Debian または Ubuntu システムでは、次のコマンドを使用して SpamAssassin をインストールします。

apt-get update && apt-get install -y spamassassin
sa-update
ログイン後にコピー

sa-update コマンドは、SpamAssassin のルールが最新であることを保証します。

インストールすると、電子メール メッセージを SpamAssassin のコマンドライン ツールにパイプすることができます。出力には、スパム スコアを含む注釈付きバージョンの電子メールが含まれており、どのルールがトリガーされるかが説明されています。

典型的な使用法は次のようになります:

spamassassin -t < input_email.txt > results.txt
ログイン後にコピー

results.txt には、SpamAssassin のヘッダーとスコアを含む処理された電子メールが含まれます。

FastAPI を使用して SpamAssassin を API としてラップする

次に、件名と html_body という 2 つの電子メール フィールドを受け入れる単純な API を作成しましょう。フィールドを SpamAssassin に渡し、検証結果を返します。

FastAPI コードの例

from fastapi import FastAPI
from datetime import datetime, timezone
from email.utils import format_datetime
from pydantic import BaseModel
import subprocess
import re

def extract_analysis_details(text):
    rules_section = re.search(r"Content analysis details:.*?(pts rule name.*?description.*?)\n\n", text, re.DOTALL)
    if not rules_section:
        return []

    rules_text = rules_section.group(1)
    pattern = r"^\s*([-\d.]+)\s+(\S+)\s+(.+)$"
    rules = []
    for line in rules_text.splitlines()[1:]:
        match = re.match(pattern, line)
        if match:
            score, rule, description = match.groups()
            rules.append({
                "rule": rule,
                "score": float(score),
                "description": description.strip()
            })
    return rules

app = FastAPI()

class Email(BaseModel):
    subject: str
    html_body: str

@app.post("/spam_check")
def spam_check(email: Email):
    # assemble the full email
    message = f"""From: example@example.com
To: recipient@example.com
Subject: {email.subject}
Date: {format_datetime(datetime.now(timezone.utc))}
Content-Type: text/html; charset="UTF-8"

{email.html_body}"""

    # Run SpamAssassin and capture the output directly
    output = subprocess.run(["spamassassin", "-t"], 
                            input=message.encode('utf-8'), 
                            capture_output=True)

    output_str = output.stdout.decode('utf-8', errors='replace')
    details = extract_analysis_details(output_str)
    return {"result": details}
ログイン後にコピー

応答には、SpamAssassin の結果の分析詳細が含まれます。

この入力を例として見てみましょう:

subject:
Test Email

html_body:
<html>
  <body>
    <p>This is an <b>HTML</b> test email.</p>
  </body>
</html>
ログイン後にコピー

応答は次のようになります:

[
  {
    "rule": "MISSING_MID",
    "score": 0.1,
    "description": "Missing Message-Id: header"
  },
  {
    "rule": "NO_RECEIVED",
    "score": -0.0,
    "description": "Informational: message has no Received headers"
  },
  {
    "rule": "NO_RELAYS",
    "score": -0.0,
    "description": "Informational: message was not relayed via SMTP"
  },
  {
    "rule": "HTML_MESSAGE",
    "score": 0.0,
    "description": "BODY: HTML included in message"
  },
  {
    "rule": "MIME_HTML_ONLY",
    "score": 0.1,
    "description": "BODY: Message only has text/html MIME parts"
  },
  {
    "rule": "MIME_HEADER_CTYPE_ONLY",
    "score": 0.1,
    "description": "'Content-Type' found without required MIME headers"
  }
]
ログイン後にコピー

API をオンラインでデプロイする

SpamAssassin を実行するには、ソフトウェアがインストールされた Linux 環境が必要です。従来は、デプロイに EC2 インスタンスまたは DigitalOcean ドロップレットが必要になる場合がありましたが、特に使用量が少ない場合は、コストがかかり、面倒な作業になる可能性があります。

サーバーレス プラットフォームに関しては、SpamAssassin のようなシステム パッケージを実行する簡単な方法が提供されていないことがよくあります。

Leapcell を使用すると、SpamAssassin のようなシステム パッケージをデプロイしながら、サービスをサーバーレスに保つことができます。料金は呼び出しに対してのみ発生し、通常は安くなります。

Leapcell への API のデプロイは非常に簡単です。 Linux 環境のセットアップ方法や Dockerfile の構築方法について心配する必要はありません。デプロイする Python イメージを選択し、「ビルド コマンド」フィールドに適切に入力するだけです。

Build an API to Keep Your Marketing Emails Out of Spam

デプロイが完了すると、オンデマンドで呼び出すことができるエンドポイントが作成されます。 API が呼び出されるたびに、SpamAssassin が実行され、電子メールにスコアが付けられ、応答が返されます。

以上がマーケティングメールをスパムから守るための API を構築するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Python vs. C:比較されたアプリケーションとユースケース Python vs. C:比較されたアプリケーションとユースケース Apr 12, 2025 am 12:01 AM

Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間でどのくらいのPythonを学ぶことができますか? 2時間でどのくらいのPythonを学ぶことができますか? Apr 09, 2025 pm 04:33 PM

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

Python:ゲーム、GUIなど Python:ゲーム、GUIなど Apr 13, 2025 am 12:14 AM

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

2時間のPython計画:現実的なアプローチ 2時間のPython計画:現実的なアプローチ Apr 11, 2025 am 12:04 AM

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Python:主要なアプリケーションの調査 Python:主要なアプリケーションの調査 Apr 10, 2025 am 09:41 AM

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

Python vs. C:曲線と使いやすさの学習 Python vs. C:曲線と使いやすさの学習 Apr 19, 2025 am 12:20 AM

Pythonは学習と使用が簡単ですが、Cはより強力ですが複雑です。 1。Python構文は簡潔で初心者に適しています。動的なタイピングと自動メモリ管理により、使いやすくなりますが、ランタイムエラーを引き起こす可能性があります。 2.Cは、高性能アプリケーションに適した低レベルの制御と高度な機能を提供しますが、学習しきい値が高く、手動メモリとタイプの安全管理が必要です。

Pythonと時間:勉強時間を最大限に活用する Pythonと時間:勉強時間を最大限に活用する Apr 14, 2025 am 12:02 AM

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

Python:自動化、スクリプト、およびタスク管理 Python:自動化、スクリプト、およびタスク管理 Apr 16, 2025 am 12:14 AM

Pythonは、自動化、スクリプト、およびタスク管理に優れています。 1)自動化:OSやShutilなどの標準ライブラリを介してファイルバックアップが実現されます。 2)スクリプトの書き込み:Psutilライブラリを使用してシステムリソースを監視します。 3)タスク管理:スケジュールライブラリを使用してタスクをスケジュールします。 Pythonの使いやすさと豊富なライブラリサポートにより、これらの分野で優先ツールになります。

See all articles