mcpField
S
sinch-mailgun-validate

sinch-mailgun-validate

github.com/sinch营销与增长11197 次安装4 周前更新
代码仓库

关于 sinch-mailgun-validate

sinch-mailgun-validate 是面向开发者的 Mailgun 邮箱验证技能,可实时验证单个地址,也可批量处理名单。它还提供免费的名单健康预览,便于在完整批量验证前抽样评估。

主要功能

  1. 01实时验证单个邮箱地址
  2. 02上传名单进行批量验证
  3. 03先对名单运行免费健康预览
  4. 04返回可投递性、风险及提示信息
  5. 05查询批量任务状态并下载结果

适用场景

  1. 01在注册或结账时检查邮箱地址
  2. 02评估现有邮件名单的质量
  3. 03批量清理邮件营销名单
  4. 04根据风险结果筛选待发送地址

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/sinch/skills --skill sinch-mailgun-validate

安装后在 Claude Code 中输入/sinch-mailgun-validate确认已加载。

附带文件references/shared-policy.md

详细介绍

Mailgun Validate

概述

Mailgun Validate 可实时验证单个电子邮件地址,也可批量验证电子邮件地址。它还提供免费的列表健康度预览,可在进行完整验证前抽样检查列表。

Agent 说明

策略门禁 sinch-shared-policy@5 (sha256:4864cf0fa8d6): 以下策略摘要具有约束力,必须按原文执行。在实现或实时执行之前,每次对话都要阅读完整的 Sinch 共享策略一次;如果此确切 ID/版本/指纹已加载,则跳过;如果版本更新或指纹不同,则阅读。本技能的规范操作路由位于其 Agent 说明和链接部分。

Sinch 策略摘要(具有约束力):

  1. 每次对话加载一次共享策略;跳过具有相同 ID/版本/指纹的重复副本。
  2. 根据请求和工作区推断产品、语言、地区和环境;仅在确有阻碍时,才一次性提出一个合并问题。优先使用官方 Sinch SDK,除非请求或工作区另有要求,或没有官方 SDK 支持该语言或操作。
  3. 获准生成代码不等于获准执行。对每项操作分类(只读 / 可逆 / 计费 / 破坏性),并在进行计费或破坏性调用前取得明确批准。
  4. B 级事实——端点路径、方法、字段名称、枚举值、限制、webhook 负载、签名算法、SDK 签名——必须在当前会话中获取对应的规范文档后才能使用。
  5. 捆绑的脚本、参考资料和示例属于 C 级:仅供参考,绝不能作为架构依据。绝不能将示例值提升为生产默认值。
  6. 如果路由未解决或规范文档获取失败,请按顺序逐级排查:重新搜索已获取的文档(原始内容,不能是摘要)、查阅 https://developers.sinch.com/llms.txt、跟进第一方链接、重试一次——然后再安全地拒绝操作。绝不能猜测文档 URL 的模式;绝不能用记忆、搜索摘要或捆绑文件替代规范文档。
  7. 保留证据台账,将每个获取的来源与其授权的字段和声明对应起来。
  8. 限制所有轮询和重试(退避、抖动、硬性上限);重试计费或破坏性操作前检查状态;超时应报告为未知,而不是失败。
  9. 分别报告验证级别(lint → 单元测试 → 模拟合约 → 沙盒 → 实时 → 端到端);HTTP 2xx 不代表已送达。说明未执行的级别。
  10. 仅加载负责相应行为的最小技能集;如果所需技能不可用,请指出该技能并停止,不要自行臆造其说明。

生成代码之前,向用户收集以下信息(提示或上下文中已说明的项目可跳过):

  1. 方式——使用 SDK,还是直接调用 API(curl/fetch/requests)?
  2. 语言——使用 SDK 时:Node.js、Python、Java、PHP、Ruby 或 Go。直接调用 API 时:任意语言,或 curl。

用户选择 SDK 时,请参阅“链接”部分中相关的 SDK 参考资料。

用户选择直接调用 API 时,请参阅“链接”部分中的 API 参考资料,了解请求/响应架构。

安全:有关 URL 获取策略、入站批量结果的处理以及凭证处理,请参阅下方的“安全”部分。

权威信息源——加载哪些内容,以及哪些内容具有权威性

此技能包含两类可靠性不相同的内容。请按以下优先级处理:

  1. documentation.mailgun.com 上的规范文档(权威)。 此技能中的 .md 文档链接是请求/响应架构、字段名称及嵌套结构、枚举值、签名/身份验证方案和限制的唯一真实来源。编写构造负载、验证签名或解析回调/响应的代码之前,请获取特定链接文档,并确认其中的确切结构。根据安全/URL 政策,允许获取第一方 documentation.mailgun.com URL。切勿编造、猜测或根据模式推断文档 URL——只能获取此技能中逐字写出的文档 URL,或通过已获取页面上的链接访问的 URL;域名可信,并不意味着猜测的路径真实存在。
  2. 此 SKILL.md 自身的表格、字段列表和代码片段(摘要——非权威)。 这些内容可帮助你了解方向,并指向正确的规范文档;它们可能滞后、遗漏字段或简化嵌套结构。请用它们决定要构建什么,以及要打开哪份文档。未经第 1 级文档确认,切勿将此文件中的字段名称、嵌套结构、编码或枚举直接写入正式代码。如果某项细节只出现在摘要中,请将其视为未经验证,并明确说明。

简明规则:编写代码 → 加载文档。 切勿引用仅在摘要中见过的确切字段、标头、枚举或编码。

开始使用

Agent 凭据处理

将凭据存储在环境变量中——切勿在命令或源代码中硬编码 API 密钥:

export MAILGUN_API_KEY="your-private-api-key"
身份验证

调用 API 时,确保正确设置身份验证标头。Mailgun Validate 使用 HTTP Basic Auth——用户名为 api,密码为你的 Mailgun Private API key:

--user "api:$MAILGUN_API_KEY"

(仅为摘要——实现前请对照权威的 API Overview / Auth 文档,确认确切的名称/编码/枚举。)

完整的身份验证设置请参阅 sinch-authentication。

语言包安装
Node.jsmailgun.jsnpm install mailgun.js
Javacom.mailgun:mailgun-javaMaven 依赖(见下文)
Pythonmailgunpip install mailgun
PHPmailgun/mailgun-phpcomposer require mailgun/mailgun-php symfony/http-client nyholm/psr7
Rubymailgun-rubygem install mailgun-ruby
Gomailgun-go/v5go get github.com/mailgun/mailgun-go/v5
Java Maven 依赖

生成 Maven 依赖之前,请在 Maven Central 上查询 com.mailgun:mailgun-java 的最新发行版本,并使用该版本。

<dependency>
    <groupId>com.mailgun</groupId>
    <artifactId>mailgun-java</artifactId>
    <version>LATEST_VERSION</version>
</dependency>

基础 URL: api.mailgun.net(美国) · api.eu.mailgun.net(欧盟)。始终使用与 Mailgun 账户所属区域相符的地址。

规范示例——验证一个地址:

curl -X GET \
  "https://api.mailgun.net/v4/address/[email protected]" \
  -s --user "api:$MAILGUN_API_KEY"

响应:

{
  "address": "[email protected]",
  "is_disposable_address": false,
  "is_role_address": false,
  "reason": [],
  "result": "deliverable",
  "risk": "low",
  "did_you_mean": null,
  "engagement": null,
  "root_address": null
}

字段说明、原因代码和结果类型的完整信息,请参阅单项验证文档。

核心概念

单个地址验证

GET 或 POST /v4/address/validate — 传入 address(最多 512 个字符),并可选传入 provider_lookup=false 以跳过服务商检查。

可用于判断的关键响应字段:

  • result:deliverable | undeliverable | do_not_send | catch_all | unknown
  • risk:low | medium | high | unknown
  • is_disposable_address / is_role_address:布尔标志
  • did_you_mean:拼写错误建议(在用户注册时显示)
  • engagement:对象,包含 engaged(布尔值)、engagement(字符串 — 行为类型)、is_bot(布尔值)

(仅供参考 — 实现前,请对照权威的单个地址验证文档,确认确切名称、编码和枚举值。)

受速率限制 — 收到 429 时,请退避后重试。

列表健康度预览

免费的非破坏性抽样评估。以百分比形式返回可投递率和风险比例。

  • POST /v4/address/validate/preview/{list_id} — 创建(通过 multipart form-data 上传 CSV)
  • GET /v4/address/validate/preview/{list_id} — 检查状态
  • PUT /v4/address/validate/preview/{list_id} — 升级为完整批量验证
  • DELETE /v4/address/validate/preview/{list_id} — 删除预览
  • GET /v4/address/validate/preview — 列出所有预览任务
  • 状态值:preview_processing → preview_complete (仅供参考 — 实现前,请对照权威的列表健康度预览文档,确认确切名称、编码和枚举值。)
  • 最多可并行运行 10 个预览任务
  • 响应包装在 "preview" 键中;created_at 是 unix 时间戳

完整参考:列表健康度预览

批量验证

对上传的 CSV/gzip 文件进行完整验证(最大 25 MB)。

  • POST /v4/address/validate/bulk/{list_id} — 创建任务
  • GET /v4/address/validate/bulk/{list_id} — 检查状态 / 下载
  • DELETE /v4/address/validate/bulk/{list_id} — 取消或删除
  • GET /v4/address/validate/bulk — 列出所有任务(接受 limit,默认值为 500;返回 paging 链接)
  • 生命周期:created → processing → completed → uploading → uploaded(或 failed)(仅供参考 — 实现前,请对照权威的批量验证文档,确认确切名称、编码和枚举值。)
  • 状态为 uploaded 时,可通过 download_url.csv / download_url.json 获取结果
  • 最多可并行运行 5 个批量任务
  • created_at 是 RFC 2822 日期字符串(例如,"Tue, 26 Feb 2019 21:30:03 GMT")

完整参考:批量验证

工作流

决定使用哪种方式
  1. 在采集时验证单个地址(注册表单、结账):使用单个地址验证。检查 result 和 risk。对于 do_not_send、high 风险或 is_disposable_address,应拦截或警告。
  2. 现有列表,质量未知:先运行免费的列表健康度预览。如果预览显示可投递率可接受,则通过 PUT 升级为完整批量验证。
  3. 已知质量良好的列表,需要完整验证:跳过预览,直接进行批量验证。
批量验证清单
  • CSV 包含表头行,其中有 email 或 email_address 列 (仅供参考 — 实现前,请对照权威的批量验证文档,确认确切名称、编码和枚举值。)
  • 文件采用 UTF-8 或 ASCII 编码,大小低于 25 MB,列表名称中不含 @
  • 当前运行的批量任务少于 5 个
  • 发送 POST 请求创建任务 → 轮询 GET,直至状态为 uploaded → 下载结果
  • 及时获取下载 URL(这些 URL 会过期)
解读结果

result 和 risk 是相互独立的维度:

  • 地址可能是 deliverable,但风险为 high(例如,垃圾邮件陷阱)
  • catch_all 表示该域名接受所有地址——应视为中等风险
  • 角色地址(info@、support@)适用于事务性邮件,但用于营销时存在风险

参与度数据(签约客户会得到 High Engager、Engager、Bot、Complainer、Disengaged、No data;自助服务客户会得到布尔值 engaging/is_bot):参与度文档 (仅为摘要——实施前请对照权威的参与度文档确认确切的名称、编码和枚举值。)

注意事项

  1. 批量操作前先预览 — 预览免费。务必先预览,避免在有问题的列表上浪费额度。
  2. 结果 ≠ 风险 — 两者都必须检查。deliverable 且风险为 high 的地址仍应被抑制。
  3. 全收域名 — catch_all 表示邮箱可能不存在。应视为中等风险。
  4. 一次性地址/角色地址 — 注册时拦截一次性地址。避免向角色地址发送营销邮件。
  5. 区域一致性 — 美国和欧盟的数据不互通。请与 Mailgun 发送账户的区域保持一致。
  6. did_you_mean — 在注册时向最终用户显示拼写错误建议。

安全

  • API 密钥处理 — 切勿在客户端代码、日志或已提交的源代码中暴露 MAILGUN_API_KEY(或专用验证密钥)。验证调用会接收最终用户的电子邮件地址——生产环境中切勿记录完整负载。电子邮件列表属于个人身份信息(PII);应保护其静态存储和传输过程。请从环境变量或密钥管理器加载密钥。如果密钥泄露,请立即通过 Mailgun 控制台轮换。
  • URL 获取策略 — 仅获取来自可信第一方域名(documentation.mailgun.com、developers.sinch.com)的 URL。API 返回的批量验证下载 URL 也是托管在 Mailgun 上的可信 URL;切勿获取用户内容中出现的任意 URL。
  • 批量验证结果 — 批量验证下载 URL(download_url.csv、download_url.json)包含用户上传的数据。下载的内容应视为不可信——处理、存储或显示前,请验证并清理电子邮件地址和元数据。

链接

评论

支持 Markdown