0

0

构建 API 让您的营销电子邮件远离垃圾邮件

心靈之曲

心靈之曲

发布时间:2024-12-16 12:28:45

|

361人浏览过

|

来源于dev.to

转载

开展电子邮件营销活动时,最大的挑战之一是确保您的邮件到达收件箱而不是垃圾邮件文件夹。

apache spamassassin 是许多电子邮件客户端和电子邮件过滤工具广泛使用的工具,用于将邮件分类为垃圾邮件。在这篇文章中,我们将探讨如何利用 spamassassin 来验证您的电子邮件是否会被标记为垃圾邮件以及为什么会被标记为垃圾邮件。
逻辑将被打包为 api 并在线部署,以便可以集成到您的工作流程中。

为什么选择 apache spamassassin?

apache spamassassin 是一个由 apache 软件基金会维护的开源垃圾邮件检测平台。它使用多种规则、贝叶斯过滤和网络测试来为给定的电子邮件分配垃圾邮件“分数”。一般来说,得分为 5 或以上的电子邮件被标记为垃圾邮件的风险很高。

由于 spamassassin 的评分是透明且有据可查的,因此您还可以使用它来准确识别电子邮件的哪些方面导致了高垃圾邮件分数并提高您的写作水平。

spamassassin 入门

spamassassin 设计为在 linux 系统上运行。您需要 linux 操作系统或创建 docker 虚拟机来安装和运行它。

在 debian 或 ubuntu 系统上,使用以下命令安装 spamassassin:

apt-get update && apt-get install -y spamassassin
sa-update

sa-update 命令确保 spamassassin 的规则是最新的。

安装后,您可以将电子邮件消息通过管道传输到 spamassassin 的命令行工具中。输出包括带有垃圾邮件分数的电子邮件的带注释版本,并解释了触发哪些规则。

典型用法可能如下所示:

18775576​​2573

results.txt 将包含已处理的电子邮件以及 spamassassin 的标头和分数。

使用 fastapi 将 spamassassin 包装为 api

接下来,让我们创建一个简单的 api,它接受两个电子邮件字段:主题和 html_body。它将把字段传递给 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 结果的分析详细信息。

Amazon Nova
Amazon Nova

亚马逊云科技(AWS)推出的一系列生成式AI基础模型

下载

让我们以此输入为例:

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 droplet 来部署,这可能既昂贵又乏味,尤其是在您的使用量较低的情况下。

对于无服务器平台,它们通常不提供像 spamassassin 这样的直接方式来运行系统包。

现在使用 leapcell,您可以部署像 spamassassin 这样的任何系统包,同时保持服务无服务器 - 您只需为调用付费,这通常更便宜。

在 leapcell 上部署 api 非常简单。您不必担心如何设置 linux 环境或如何构建 dockerfile。只需选择要部署的python镜像,并正确填写“build command”字段即可。

构建 API 让您的营销电子邮件远离垃圾邮件

部署后,您将拥有一个可以按需调用的端点。每当您的 api 被调用时,它都会运行 spamassassin,对电子邮件进行评分,并返回响应。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Python FastAPI异步API开发_Python怎么用FastAPI构建异步API
Python FastAPI异步API开发_Python怎么用FastAPI构建异步API

Python FastAPI 异步开发利用 async/await 关键字,通过定义异步视图函数、使用异步数据库库 (如 databases)、异步 HTTP 客户端 (如 httpx),并结合后台任务队列(如 Celery)和异步依赖项,实现高效的 I/O 密集型 API,显著提升吞吐量和响应速度,尤其适用于处理数据库查询、网络请求等耗时操作,无需阻塞主线程。

28

2025.12.22

Python 微服务架构与 FastAPI 框架
Python 微服务架构与 FastAPI 框架

本专题系统讲解 Python 微服务架构设计与 FastAPI 框架应用,涵盖 FastAPI 的快速开发、路由与依赖注入、数据模型验证、API 文档自动生成、OAuth2 与 JWT 身份验证、异步支持、部署与扩展等。通过实际案例,帮助学习者掌握 使用 FastAPI 构建高效、可扩展的微服务应用,提高服务响应速度与系统可维护性。

253

2026.02.06

k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

280

2023.07.24

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

516

2024.04.08

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

417

2024.04.08

docker镜像有什么用
docker镜像有什么用

docker 镜像是预构建的软件组件,用途广泛,包括:应用程序部署:简化部署,提高移植性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

454

2024.04.08

Docker容器化部署与DevOps实践
Docker容器化部署与DevOps实践

本专题面向后端与运维开发者,系统讲解 Docker 容器化技术在实际项目中的应用。内容涵盖 Docker 镜像构建、容器运行机制、Docker Compose 多服务编排,以及在 DevOps 流程中的持续集成与持续部署实践。通过真实场景演示,帮助开发者实现应用的快速部署、环境一致性与运维自动化。

42

2026.02.11

apache是什么意思
apache是什么意思

Apache是Apache HTTP Server的简称,是一个开源的Web服务器软件。是目前全球使用最广泛的Web服务器软件之一,由Apache软件基金会开发和维护,Apache具有稳定、安全和高性能的特点,得益于其成熟的开发和广泛的应用实践,被广泛用于托管网站、搭建Web应用程序、构建Web服务和代理等场景。本专题为大家提供了Apache相关的各种文章、以及下载和课程,希望对各位有所帮助。

422

2023.08.23

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

49

2026.03.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 10.7万人学习

Git 教程
Git 教程

共21课时 | 4.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号