mcpField
E
Email Verifier (SMTP, MX, Catch-All)

Email Verifier (SMTP, MX, Catch-All)

远程服务
apify.com商业与营销02 周前更新

关于 Email Verifier (SMTP, MX, Catch-All)

Email Verifier 批量检查邮箱语法、DNS/MX、名单特征及实时 SMTP 握手,且不会发送邮件。它面向代码、n8n 工作流和 AI Agent,结果字段固定,并区分可投递、风险、未知和不可投递状态。

主要功能

  1. 01批量检查语法、DNS/MX 和 SMTP
  2. 02识别一次性及角色邮箱
  3. 03探测全收件域名
  4. 04返回固定的状态和检查字段
  5. 05提供 n8n 工作流模板

适用场景

  1. 01发送前筛查潜在客户名单
  2. 02注册时拦截一次性邮箱
  3. 03将不确定的邮箱转入重试或复核
  4. 04将邮箱验证接入 AI Agent

MCP 相关

可通过限定为此 Actor 的 Apify MCP 服务使用。README 还提供了 MCP 客户端配置示例。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://mcp.apify.com/?tools=sumitr_mardy/email-verifier
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

全部服务地址
Streamable HTTPhttps://mcp.apify.com/?tools=sumitr_mardy/email-verifier需要授权

工具

详细介绍

English | 简体中文

批量电子邮件验证 API — 适用于 n8n、AI Agent 和 MCP

批量验证电子邮件地址:RFC 5322 语法 → DNS/MX → 一次性邮箱、角色邮箱和免费服务商列表 → 实时 SMTP 握手,并强制执行 catch-all 探测。绝不会发送电子邮件——检查会开启 SMTP 会话、读取回复代码,然后断开连接。

n8n 模板 MCP 就绪 OpenAPI 定价 许可证

➜ 在 Apify 上试用
{
  "email": "[email protected]",
  "status": "deliverable",
  "sub_status": "valid_mailbox",
  "score": 100,
  "checks": {
    "syntax": true, "domain_exists": true, "mx_found": true,
    "smtp_connectable": true, "mailbox_exists": true, "catch_all": false,
    "disposable": false, "role_based": false, "free_provider": false,
    "a_record_fallback": false, "has_tag": false
  },
  "mx_record": "aspmx.l.google.com"
}

为什么工作流喜欢它

大多数验证工具都是为查看仪表板的人编写的。而这个工具假定调用方是代码。

因此,输出必须保证:

1. status 始终是四个值之一。 deliverable、undeliverable、risky、unknown。绝不会是 null、空值或第五种值。只需枚举一次,就能始终正确处理。

2. 每条记录都包含全部 11 个 checks 键。 从未运行的检查值为 false,原因则记录在 sub_status 中。不会遗漏任何内容。

3. 如实报告 catch-all 域名和 Gmail 类型的服务商。 它们会返回带有原因的 risky,而不是捏造一个“有效”结果。

这三点意味着你可以这样写:

const mailable = results.filter(r => r.status === 'deliverable');
const neverSend = results.filter(r => r.status === 'undeliverable' || r.checks.disposable);
const retryLater = results.filter(r => r.status === 'unknown');

而不必这样写:

const mailable = results.filter(r => r?.status === 'valid' && (r.checks?.catch_all ?? false) === false);

第二行就是所有默认允许 null 的 API 迫使你写的代码。对 Agent 来说,这比对人更重要:Agent 不能写 ?? false——它会依据读取到的内容采取行动。字段有时会消失并非不便,而是带着十足把握传递了错误答案。


如何处理每种结果

statussub_status处理方式
deliverablevalid_mailbox发送
riskyrole_based只有可以接受共享收件箱时才发送
riskycatch_all无法确认邮箱——少量发送,或通过其他方式补充信息
riskyfree_provider_unverifiable视为消费者地址;无法通过 SMTP 确认邮箱
riskyfull_mailbox暂缓,几天后重试
riskydisposable不要发送;在注册时拦截
unknowngreylisted30–60 分钟后重试——这不是无效地址
unknownsmtp_timeout稍后重试;如果问题持续存在,则视为未验证
unknowninternal_error重试一次
undeliverable任意从列表中移除

包含分数和判断依据的完整表格:docs/statuses.md

重要区别在于:undeliverable 表示我们已确认地址无效;unknown 表示我们无法确认。将两者混为一谈的工具会显示更好看的数字,却悄悄从你的列表中删掉真实客户。


在 n8n 中使用

每个模板都通过核心 HTTP Request 节点调用 Actor——无需安装社区节点,可在 n8n Cloud 和可自托管的 n8n 上使用。身份验证使用名为 Apify API 的 n8n Header Auth 凭据;此处不会在任何文件中存储令牌。

模板功能导入
验证 Google Sheets 潜在客户列表读取尚无判定结果的行,分批验证,并将 status/score 写回。可安全重复运行和安排定时运行。t1-google-sheets.json
注册时拦截一次性邮箱接收 Webhook,返回 {allow|review|block},策略集中在一个可编辑的 Code 节点中。t2-signup-check.json
冷邮件发送前清理 CSV上传 Apollo/Instantly/HubSpot 导出文件,返回三个 CSV,分别包含 send_safe / review / drop。灰名单中的行会重试一次。t3-clean-csv.json
AI Agent 工具一个仅将验证器作为工具的 AI Agent,并附有教它使用上述操作表的系统提示词。t4-ai-agent-tool.json

四个模板的中文版本(含本地化便笺):workflows/zh-CN/

**导入方法:**下载 JSON 文件,然后在 n8n 中选择 Workflows → Import from File。每个工作流的便笺中都包含设置步骤。


在 AI Agent 中使用

MCP — Apify MCP 服务,仅限此 Actor 使用。Claude Desktop 和 Cursor 的配置:agents/mcp/

OpenAPI — Dify、Coze、GPT Actions 和 LangChain 的 OpenAPI 工具包都能导入的单个文件:openapi/email-verifier.openapi.yaml

工具定义 — 可直接用于 OpenAI 函数调用和 Anthropic 工具 API 的 JSON:agents/tool-definitions/

供 Agent 自身使用 — llms.txt 一次性列出完整约定:端点、输入、输出、操作表和批处理限制。

中文优先的设置指南:Dify · Coze / 扣子


在代码中使用

curl -X POST "https://api.apify.com/v2/acts/sumitr_mardy~email-verifier/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"emails":["[email protected]","[email protected]"]}'

Python 和 Node 示例均不超过 25 行,无需 SDK:examples/


大型列表

每次调用都应将地址放在一个批次中,而不是每个地址单独调用——批处理能让验证既便宜又快速。

同步 Apify 运行必须在 300 秒内完成。超过此时限时,请使用异步模式:启动运行、等待完成,然后获取数据集。可运行示例:examples/batch-large-list/

实测吞吐量和建议使用的批次大小:docs/pricing-and-batching.md


定价

按事件付费:每个获得判定结果的地址收费一次——包括 undeliverable 和 unknown,因为无论结果如何,验证工作都已完成;而确认无效的地址正是你付费要获得的结果。不按运行次数收费。

费率根据你的 Apify 计划分级,并会随市场调整,因此此处不再列出,以免信息过时:查看当前定价。

调用 API 需要 Apify 账户;提供免费套餐。


已知限制

如实说明这些限制,因为你迟早会发现。

  • **无法验证免费邮箱服务商的邮箱是否存在。**Gmail、Outlook、Yahoo 和 iCloud 会对不存在的地址返回 250,随后在投递时退信。任何声称能通过 SMTP 判断 Gmail 邮箱是否存在的服务商,都是在猜测。你会得到 risky/free_provider_unverifiable 和 checks.mailbox_exists: false。
  • **无法验证全收域名的邮箱是否存在。**这是由其定义决定的。探测会识别此类域名并明确说明,而不会返回看似确定的猜测结果。
  • **灰名单不是判定结果。**遇到 421/450 时,会返回 unknown/greylisted,此结果可重试。T3 模板会为你执行重试。

常见问题

它会发送邮件吗? 不会。它会建立 SMTP 会话,发送 EHLO、MAIL FROM 和 RCPT TO,读取回复代码,然后断开连接。它绝不会发送 DATA,因此整个过程中都不会生成任何邮件正文。

它能验证 Gmail 地址吗? 它会验证语法和域名是否有效,以及地址是否为一次性邮箱。但它无法确认某个具体的 Gmail 邮箱是否存在——Google 对真实地址和虚假地址的回复完全相同。任何使用 SMTP 的工具都无法做得更好;声称可以的工具只是在猜测。

什么是全收域名? 这类域名会接受发往任何地址的邮件,无论该地址是否存在。在验证器查询你的地址之前,它会对一个随机的本地部分发送 RCPT TO,而该部分不可能存在。如果对方接受了请求,该域名就是全收域名,其上的每个地址都会标记为 risky/catch_all。

每次调用最多可以验证多少封邮件? 只要能在 300 秒的同步限制内完成,数量不限。请用你自己的列表进行测算;参见 docs/pricing-and-batching.md。超过限制时,请使用异步模式。

如何处理 Apollo / Instantly / Lemlist 导出的文件? 使用模板 T3——上传 CSV 文件,即可获取三个清理后的列表。它会自动选择电子邮件列,并先去重,因此同一地址不会被重复收费。

重复项会怎样处理? 重复项也会收费。调用前请先去重;这里的每个模板都会自动执行去重。


采用 MIT 许可。欢迎提交问题和拉取请求,尤其欢迎使用不同版本且发现行为差异的用户修正 n8n 模板。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。