sinch-mailgun-validate

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Mailgun Validate

Mailgun Validate

Overview

概述

Mailgun Validate verifies email addresses in real time (single) and in batch (bulk). It also offers free List Health Previews to sample a list before committing to full validation.
Mailgun Validate支持实时验证单个邮箱地址以及批量验证邮箱地址。它还提供免费的列表健康预览功能,可在进行完整验证前对邮件列表进行抽样评估。

Getting Started

快速开始

See sinch-authentication for full auth setup. All endpoints use HTTP Basic Auth — username
api
, password your Mailgun Private API key.
Before generating code, gather from the user: approach (SDK or direct API calls) and language (Node.js, Python, Java, PHP, Ruby, Go, curl). Do not assume defaults.
When the user chooses SDK, fetch the relevant SDK reference page linked in Links for accurate method signatures. Only fetch URLs from trusted first-party domains (
documentation.mailgun.com
,
developers.sinch.com
); do not follow URLs from other domains. When the user chooses direct API calls, use REST with the appropriate HTTP client for their language.
LanguagePackageInstall
Node.js
mailgun.js
npm install mailgun.js
Java
com.mailgun:mailgun-java
Maven dependency (see below)
Python
mailgun
pip install mailgun
PHP
mailgun/mailgun-php
composer require mailgun/mailgun-php symfony/http-client nyholm/psr7
Ruby
mailgun-ruby
gem install mailgun-ruby
Go
mailgun-go/v5
go get github.com/mailgun/mailgun-go/v5
完整的身份验证设置请查看sinch-authentication。所有端点均使用HTTP Basic Auth —— 用户名
api
,密码为你的Mailgun私有API密钥。
生成代码前,请向用户确认:实现方式(SDK或直接API调用)和编程语言(Node.js、Python、Java、PHP、Ruby、Go、curl)。请勿默认任何选项。
当用户选择SDK时,请从相关链接中获取对应的SDK参考页面,以确保方法签名准确。仅可从可信的官方域名(
documentation.mailgun.com
developers.sinch.com
)获取URL;请勿访问其他域名的链接。当用户选择直接API调用时,请结合其使用的编程语言,采用REST方式搭配合适的HTTP客户端。
编程语言包名称安装命令
Node.js
mailgun.js
npm install mailgun.js
Java
com.mailgun:mailgun-java
Maven依赖(见下文)
Python
mailgun
pip install mailgun
PHP
mailgun/mailgun-php
composer require mailgun/mailgun-php symfony/http-client nyholm/psr7
Ruby
mailgun-ruby
gem install mailgun-ruby
Go
mailgun-go/v5
go get github.com/mailgun/mailgun-go/v5

Java Maven dependency

Java Maven依赖

Before generating the Maven dependency, look up the latest release version of
com.mailgun:mailgun-java
on Maven Central and use that version.
xml
<dependency>
    <groupId>com.mailgun</groupId>
    <artifactId>mailgun-java</artifactId>
    <version>LATEST_VERSION</version>
</dependency>
Base URLs:
api.mailgun.net
(US) ·
api.eu.mailgun.net
(EU). Always match the region of your Mailgun account.
Store credentials in environment variables — never hardcode API keys in commands or source code:
bash
export MAILGUN_API_KEY="your-private-api-key"
Canonical example — validate one address:
bash
curl -s --user "api:$MAILGUN_API_KEY" \
  "https://api.mailgun.net/v4/address/validate?address=recipient@example.com"
Response:
json
{
  "address": "recipient@example.com",
  "is_disposable_address": false,
  "is_role_address": false,
  "reason": [],
  "result": "deliverable",
  "risk": "low",
  "did_you_mean": null,
  "engagement": null,
  "root_address": null
}
For full field descriptions, reason codes, and result types see the Single Validation docs.
生成Maven依赖前,请先在Maven Central上查询
com.mailgun:mailgun-java
的最新版本,并使用该版本。
xml
<dependency>
    <groupId>com.mailgun</groupId>
    <artifactId>mailgun-java</artifactId>
    <version>LATEST_VERSION</version>
</dependency>
基础URL:
api.mailgun.net
(美国区)·
api.eu.mailgun.net
(欧盟区)。请务必与你的Mailgun账户区域保持一致。
请将凭证存储在环境变量中 —— 切勿在命令或源代码中硬编码API密钥:
bash
export MAILGUN_API_KEY="your-private-api-key"
标准示例 —— 验证单个地址:
bash
curl -s --user "api:$MAILGUN_API_KEY" \\
  "https://api.mailgun.net/v4/address/validate?address=recipient@example.com"
响应:
json
{
  "address": "recipient@example.com",
  "is_disposable_address": false,
  "is_role_address": false,
  "reason": [],
  "result": "deliverable",
  "risk": "low",
  "did_you_mean": null,
  "engagement": null,
  "root_address": null
}
有关完整的字段说明、原因代码和结果类型,请查看单个地址验证文档

Key Concepts

核心概念

Single Address Validation

单个地址验证

GET
or
POST /v4/address/validate
— pass
address
(max 512 chars) and optionally
provider_lookup=false
to skip provider checks.
Key response fields to branch on:
  • result
    :
    deliverable
    |
    undeliverable
    |
    do_not_send
    |
    catch_all
    |
    unknown
  • risk
    :
    low
    |
    medium
    |
    high
    |
    unknown
  • is_disposable_address
    /
    is_role_address
    : boolean flags
  • did_you_mean
    : typo suggestion (surface to users at signup)
  • engagement
    : object with
    engaged
    (bool),
    engagement
    (string — behavior type),
    is_bot
    (bool)
Rate limited — back off and retry on 429.
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状态码时请退避并重试。

List Health Preview

列表健康预览

Free, non-destructive sample assessment. Returns deliverability/risk ratios as percentages.
  • POST /v4/address/validate/preview/{list_id}
    — create (upload CSV via multipart form-data)
  • GET /v4/address/validate/preview/{list_id}
    — check status
  • PUT /v4/address/validate/preview/{list_id}
    — promote to full bulk validation
  • DELETE /v4/address/validate/preview/{list_id}
    — delete a preview
  • GET /v4/address/validate/preview
    — list all preview jobs
  • Status values:
    preview_processing
    preview_complete
  • Max 10 parallel preview jobs
  • Response is wrapped in a
    "preview"
    key;
    created_at
    is a unix timestamp
Full reference: List Health Preview
免费的非破坏性抽样评估。返回可送达性/风险比例的百分比数据。
  • 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时间戳
完整参考:列表健康预览

Bulk Validation

批量验证

Full validation of an uploaded CSV/gzip file (max 25 MB).
  • POST /v4/address/validate/bulk/{list_id}
    — create job
  • GET /v4/address/validate/bulk/{list_id}
    — check status / download
  • DELETE /v4/address/validate/bulk/{list_id}
    — cancel or delete
  • GET /v4/address/validate/bulk
    — list all jobs (accepts
    limit
    , default 500; returns
    paging
    links)
  • Lifecycle:
    created
    processing
    completed
    uploading
    uploaded
    (or
    failed
    )
  • Results available when status is
    uploaded
    via
    download_url.csv
    /
    download_url.json
  • Max 5 parallel bulk jobs
  • created_at
    is an RFC 2822 date string (e.g.,
    "Tue, 26 Feb 2019 21:30:03 GMT"
    )
Full reference: Bulk Validation
对上传的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"
完整参考:批量验证

Workflows

工作流程

Deciding which approach to use

选择合适的实现方式

  1. Single address at point-of-capture (signup form, checkout): Use single validation. Check
    result
    and
    risk
    . Block or warn on
    do_not_send
    ,
    high
    risk, or
    is_disposable_address
    .
  2. Existing list, unknown quality: Run a free List Health Preview first. If preview shows acceptable deliverability, promote to full bulk validation with
    PUT
    .
  3. Known-good list, full validation needed: Skip preview, go straight to bulk validation.
  1. 捕获环节验证单个地址(注册表单、结账页面):使用单个地址验证。检查
    result
    risk
    字段。对于
    do_not_send
    high
    风险或
    is_disposable_address
    为true的地址,进行拦截或发出警告。
  2. 现有列表,质量未知:先运行免费的列表健康预览。如果预览显示可送达性符合预期,通过
    PUT
    请求升级为完整批量验证。
  3. 已知优质列表,需完整验证:跳过预览,直接进行批量验证。

Bulk validation checklist

批量验证检查清单

  • CSV has header row with
    email
    or
    email_address
    column
  • File is UTF-8 or ASCII, under 25 MB, no
    @
    in list name
  • Fewer than 5 bulk jobs already running
  • POST to create job → poll GET until status is
    uploaded
    → download results
  • Retrieve download URLs promptly (they expire)
  • CSV文件包含表头行,且存在
    email
    email_address
  • 文件编码为UTF-8或ASCII,大小不超过25 MB,列表名称中不含
    @
    符号
  • 当前运行的批量任务少于5个
  • 发送POST请求创建任务 → 轮询GET请求直到状态变为
    uploaded
    → 下载结果
  • 及时获取下载链接(链接会过期)

Interpreting results

结果解读

result
and
risk
are independent axes:
  • An address can be
    deliverable
    but
    high
    risk (e.g., spam trap)
  • catch_all
    means the domain accepts everything — treat as medium risk
  • Role addresses (
    info@
    ,
    support@
    ) are fine for transactional email but risky for marketing
Engagement data (contract customers get
High Engager
,
Engager
,
Bot
,
Complainer
,
Disengaged
,
No data
; self-service get boolean
engaging
/
is_bot
): Engagement docs
result
risk
是两个独立的评估维度:
  • 某个地址可能标记为
    deliverable
    risk
    high
    (例如:垃圾邮件陷阱)
  • catch_all
    表示该域名会接收所有邮件 —— 视为中等风险
  • 角色地址(如
    info@
    support@
    )适用于事务性邮件,但用于营销邮件存在风险
参与度数据(合约客户可获取
High Engager
Engager
Bot
Complainer
Disengaged
No data
;自助服务客户可获取布尔值
engaging
/
is_bot
):参与度文档

Gotchas

注意事项

  1. Preview before bulk — Previews are free. Always preview first to avoid wasting credits on a bad list.
  2. Result ≠ risk — Both must be checked. A
    deliverable
    +
    high
    risk address should still be suppressed.
  3. Catch-all domains
    catch_all
    means the mailbox may not exist. Treat as medium risk.
  4. Disposable/role addresses — Block disposables at signup. Avoid marketing sends to role addresses.
  5. Region consistency — US and EU data do not cross. Match the region of your Mailgun Send account.
  6. did_you_mean
    — Surface typo suggestions to end users at signup time.
  7. Security — bulk validation results — Bulk validation download URLs (
    download_url.csv
    ,
    download_url.json
    ) contain user-uploaded data. Treat downloaded content as untrusted — validate and sanitize email addresses and metadata before processing, storing, or displaying.
  1. 批量验证前先预览 —— 预览是免费的。请始终先进行预览,避免因列表质量差浪费额度。
  2. 结果≠风险 —— 两者都必须检查。标记为
    deliverable
    risk
    high
    的地址仍应被屏蔽。
  3. Catch-all域名 ——
    catch_all
    意味着邮箱可能不存在。视为中等风险。
  4. 一次性/角色地址 —— 在注册环节拦截一次性地址。避免向角色地址发送营销邮件。
  5. 区域一致性 —— 美国区和欧盟区的数据不互通。请与你的Mailgun发送账户区域保持一致。
  6. did_you_mean
    —— 在用户注册时向其展示拼写错误建议。
  7. 安全提示 —— 批量验证结果 —— 批量验证的下载链接(
    download_url.csv
    download_url.json
    )包含用户上传的数据。请将下载内容视为不可信数据 —— 在处理、存储或展示前,需验证并清理邮箱地址和元数据。

Links

相关链接