邮箱地址查询

一个字段, 即可判定地址。

发送一个地址,获取一个判定结果:valid、neutral、risky、undeliverable 或 typo。同时返回 0 到 100 的置信度评分、标明地址类型的标记,以及拼写错误可能对应的正确地址。一次请求,无需上传列表,无需轮询任务。

email.ts
200
const answer = await bird.lookup.email({
  email: "aisha.khan@exampel.com",
});

console.log(answer.result, answer.delivery_confidence);
// → "typo" 31
console.log(answer.did_you_mean);
// → "aisha.khan@example.com"
console.log(answer.valid, answer.flags);
// → true []

一个可直接用于分支逻辑的判定结果。

而非需要您自行选定阈值的百分比。

邮箱地址查询是 Bird Lookup API 中两种操作之一。编写逻辑时应依据 result 字段,因为它已将语法、域名、邮箱和信誉检查归纳为五种结果。delivery_confidence 适用于需要评级而非拦截的场景,例如将高风险注册暂留审核而非直接拒绝。您发送的地址原样返回:本地部分区分大小写且不会被转换为小写,显示名称格式会被拒绝而非解析。

六个字段,各有用途。

所有字段均通过同一次请求返回。

  1. 01

    result,判定结果。

    valid 表示可安全发送。neutral 表示可投递但无额外参考信息。risky 表示可能接收邮件但存在需要犹豫的理由。undeliverable 表示无法接收邮件。typo 表示看起来像是某个真实地址的拼写错误。

  2. 02

    reason,仅在适用时出现。

    invalid_syntax、invalid_domain 或 invalid_recipient,指明地址未通过三项检查中的哪一项。它仅出现在 undeliverable 判定中,不出现在其他判定中,因此它的缺失本身也是信息。

  3. 03

    did_you_mean,纠正建议。

    typo 可能对应的正确地址,可直接展示给输入者。注册表单提供纠正建议,能挽回账户,而非让它因无人察觉的退信而丢失。

  4. 04

    delivery_confidence,0 到 100。

    这是一个评级而非决策,这也是它与 result 的区别所在。两个地址可能共享同一判定结果,但在此数值上相差甚远,而这个差距正是审核队列应介入之处。

  5. 05

    flags,地址类型。

    role 表示共享邮箱(如 info 或 support),disposable 表示一次性邮箱提供商,free_provider 表示个人免费邮箱。这三者都是格式正确且可接收邮件的地址,因此它们是标记而非判定结果。

  6. 06

    valid,窄义布尔值。

    表示地址格式正确且其域名能够接收邮件。它不涉及邮箱本身,因此许多判定为 risky 的地址其 valid 值也为 true。当您需要判定结果时,请读取 result。

五种结果,四种处理方式。

拒绝 undeliverable 的地址,对 typo 提供纠正建议,将 risky 地址暂留审核,接受其余地址。这就是整个集成,它可以放在收集地址的表单提交处理程序中。

verdicts.ts
200
const answer = await bird.lookup.email({
  email: "info@example.com",
});

if (answer.result === "undeliverable") {
  // reason is present on this verdict and no other.
  reject(answer.reason);
} else if (answer.result === "typo") {
  suggest(answer.did_you_mean);
} else if (answer.result === "risky") {
  // A role or disposable address is well formed and still a poor signup.
  review(answer.flags);
} else {
  accept(answer.delivery_confidence);
}

费用说明,以及它不是什么。

每次请求查询一个地址,每个判定结果均计费,包括 undeliverable,因为得出该判定本身就是工作量。没有批量形式,也没有列表上传。携带相同 Idempotency-Key 的重试会重放您已付费的判定结果。Lookup 也不是抑制列表:它在您发送之前告诉您地址的情况,而抑制列表记录的是您发送之后发生的事情,健康的发送体系两者都需要。

在文档中深入了解。

查询邮箱地址 详解请求及响应中的每个字段。Lookup 概览 在一页内涵盖两种操作,速率限制 记录了 lookup 组的相关文档,幂等性 说明了重放判定结果的费用。

邮箱地址常见问题解答。

判定结果、标记、置信度评分,以及抑制列表的定位。

邮箱地址查询能返回什么信息?
该地址是否接收邮件。一次调用即可返回 result 中的判定结果、delivery_confidence 评分、描述地址类型的标志位,以及当地址疑似拼写错误时的修正建议。
五种判定结果分别是什么?
valid 表示地址存在且接收邮件,可以发送。neutral 表示无法确认,通常是因为接收域对所有收件人返回相同响应。risky 表示可能接收邮件,但比一般地址更容易退信或投诉。undeliverable 表示不接收邮件。typo 表示地址看起来拼写有误。
为什么地址会被判定为不可投递?
reason 会说明三种问题中的哪一种:invalid_syntax 表示地址格式错误,invalid_domain 表示该域名完全不接收邮件,invalid_recipient 表示域名接收邮件但该邮箱不存在。
收到 typo 判定结果后应该怎么做?
将 did_you_mean 的建议展示给输入原始地址的用户,而不是直接向该地址发送邮件。修正建议只是猜测,用户实际想输入的地址可能两者都不是。
delivery_confidence 和 result 有什么区别?
它的范围从 0(确定无法投递)到 100(确定可以投递)。相同的分数可能因为不同原因出现在不同的判定结果下,因此应将其与 result 结合阅读,而非替代 result。当您需要对所有判定结果(包括未来新增的判定)设定统一阈值时,这是应该依赖的字段。
还有一个 valid 字段,它就是 valid 判定结果吗?
不是,两者的区别很重要。valid 字段的范围更窄:它只判断地址格式是否正确以及其域名是否配置为接收邮件。它不涉及邮箱本身,因此一个域名正常但邮箱不存在的地址,valid 字段为 true,但 result 中为 undeliverable。
各标志位是什么意思?
role 表示该地址对应的是一个职能而非个人,例如 support@ 或 info@,因此回复和授权同意具有歧义,投诉的可能性也更高。disposable 表示一次性邮箱提供商,该地址通常会很快失效。free_provider 表示消费级邮箱提供商,如 Gmail 或 Outlook.com,仅在您期望收到企业邮箱地址时才有参考意义。
地址应该怎么写?
发送裸地址,与您存储的格式完全一致。带显示名称的格式(名称在前,地址用尖括号包裹)会被直接拒绝而不会被解析,因为解析后查询的地址并非您提交的地址。@ 符号前面的部分按原样传递,大小写的改变可能会影响返回的 delivery_confidence。
我需要用 Lookup 来停止向已退信的地址发送邮件吗?
不需要。抑制列表会自动且免费地处理已退信或已投诉的地址。Lookup 用于您尚未发送过邮件的地址,例如在注册时或处理潜在客户之前。

付诸实践。

继续查阅此主题的文档、指南和示例。资源为英文。

获取实施简报

在地址进入列表之前进行验证。

在注册流程中加入一次调用,即可将退信、一次性账户和拼写错误拦截在数据库之外。

从一个渠道开始。
准备好后,再添加其他渠道。

测试 API 密钥即刻可用。添加支付方式并验证发送者身份后,即可解锁生产环境。

正在使用 Claude Code、Cursor 或 Codex?复制一条设置提示,您的智能代理即可自动安装 Bird CLI 和相关技能。选择您的工具:

Cursor