Email Service 提供分析功能,让您检查所有域名的电子邮件发送性能和投递率。
Cloudflare 仪表板 ↗ 图表中显示的指标来自 Cloudflare 的 GraphQL Analytics API。您可以通过 GraphQL 或 HTTP 客户端以编程方式访问这些指标。
Email Service 当前公开以下指标:
| 数据集 | GraphQL 数据集名称 | 描述 |
|---|---|---|
| Sending(聚合) | emailSendingAdaptiveGroups |
按状态、日期、发送域名和身份验证结果等维度分组的聚合电子邮件发送计数。 |
| Sending(事件) | emailSendingAdaptive |
包含发件人、收件人、主题、消息 ID 和错误信息等完整详情的单封电子邮件发送事件。 |
| Routing(聚合) | emailRoutingAdaptiveGroups |
按状态、日期、收件人域名和身份验证结果等维度分组的聚合电子邮件路由计数。 |
| Routing(事件) | emailRoutingAdaptive |
包含发件人、收件人、主题、消息 ID 和处理决策等完整详情的单封电子邮件路由事件。 |
指标可查询(并保留)过去 31 天的数据。
Email Service 的按域名分析可在 Cloudflare 仪表板中使用。要查看当前和历史指标:
- 登录 Cloudflare 仪表板 ↗ 并选择您的账户。
- 前往 Compute(计算) > Email Service(电子邮件服务),并选择 Email Sending(电子邮件发送) 或 Email Routing(电子邮件路由)。
- 选择现有域名或查看账户范围的指标。
- 选择 Analytics(分析) 选项卡。
您可以选择时间窗口进行查询。默认值为过去 24 小时。
您可以通过 GraphQL Analytics API 以编程方式查询 Email Service 域名的分析数据。此 API 查询的数据集与 Cloudflare 仪表板相同,并支持 GraphQL 内省。
要开始使用 GraphQL Analytics API,请按照文档设置 GraphQL Analytics API 的身份验证。您的 API 令牌必须包含 Analytics Read 权限。
这些是 zone 级别 数据集。查询时请提供您的 zone ID(而非账户 ID)作为 zoneTag 过滤条件。Email Service 的 GraphQL 数据集包括:
emailSendingAdaptiveGroups— 带有可分组维度的聚合电子邮件发送计数emailSendingAdaptive— 单封电子邮件发送事件emailRoutingAdaptiveGroups— 带有可分组维度的聚合电子邮件路由计数emailRoutingAdaptive— 单封电子邮件路由事件
emailSendingAdaptiveGroups 数据集支持以下用于分组和过滤的维度:
| 维度 | 类型 | 描述 |
|---|---|---|
date |
Date | 按天分组 |
datetime |
Time | 精确事件时间戳 |
datetimeMinute |
Time | 按分钟分组 |
datetimeFiveMinutes |
Time | 按 5 分钟间隔分组 |
datetimeFifteenMinutes |
Time | 按 15 分钟间隔分组 |
datetimeHour |
Time | 按小时分组 |
status |
string | 投递状态(例如 delivered、deliveryFailed) |
eventType |
string | 电子邮件来源(incoming、forward、reply、newEmail) |
sendingDomain |
string | 用于发送电子邮件的域名 |
envelopeTo |
string | 收件人信封地址 |
errorCause |
string | 发送失败的错误原因 |
arc |
string | ARC 身份验证结果 |
dkim |
string | DKIM 身份验证结果 |
dmarc |
string | DMARC 身份验证结果 |
spf |
string | SPF 身份验证结果 |
isSpam |
uint8 | 电子邮件是否被标记为垃圾邮件 |
isNDR |
uint8 | 电子邮件是否为未送达报告 |
isLastEvent |
uint8 | 是否为该电子邮件的最后一个事件 |
emailSendingAdaptive 数据集包含以上全部字段,以及按事件的字段:from、to、subject、messageId、sessionId、errorDetail。
emailRoutingAdaptiveGroups 数据集支持以下用于分组和过滤的维度:
| 维度 | 类型 | 描述 |
|---|---|---|
date |
Date | 按天分组 |
datetime |
Time | 精确事件时间戳 |
datetimeMinute |
Time | 按分钟分组 |
datetimeFiveMinutes |
Time | 按 5 分钟间隔分组 |
datetimeFifteenMinutes |
Time | 按 15 分钟间隔分组 |
datetimeHour |
Time | 按小时分组 |
status |
string | 电子邮件的最终结果 |
eventType |
string | 电子邮件来源(incoming、forward、reply、newEmail) |
action |
string | 路由规则应用的操作 |
ruleMatched |
string | 电子邮件匹配的路由规则 UUID |
arc |
string | ARC 身份验证结果 |
dkim |
string | DKIM 身份验证结果 |
dmarc |
string | DMARC 身份验证结果 |
spf |
string | SPF 身份验证结果 |
isSpam |
uint8 | 电子邮件是否被标记为垃圾邮件 |
isNDR |
uint8 | 电子邮件是否为未送达报告 |
isLastEvent |
uint8 | 是否为该电子邮件的最后一个事件 |
emailRoutingAdaptive 数据集包含以上全部字段,以及按事件的字段:from、to、subject、messageId、sessionId、errorDetail、ruleMatched。
以下是可用于检索 Email Service 分析信息的常用 GraphQL 查询。这些查询使用变量 $zoneTag,应设置为您的 Cloudflare Zone ID。您可以在 Cloudflare 仪表板中域名的 Overview(概览) 页面找到该 ID。
{
"zoneTag": "<YOUR_ZONE_ID>",
"start": "2024-07-15",
"end": "2024-07-30"
}查询给定日期范围内的电子邮件数量,按 date 和 status(例如 delivered、deliveryFailed)分组:
query EmailSendingByStatus($zoneTag: string!, $start: Date!, $end: Date!) {
viewer {
zones(filter: { zoneTag: $zoneTag }) {
emailSendingAdaptiveGroups(
filter: { date_geq: $start, date_leq: $end }
limit: 10000
orderBy: [date_DESC]
) {
count
dimensions {
date
status
}
}
}
}
}调查特定日期范围的投递失败原因,按 errorCause 和 sendingDomain 分组:
query EmailDeliveryFailures($zoneTag: string!, $start: Date!, $end: Date!) {
viewer {
zones(filter: { zoneTag: $zoneTag }) {
emailSendingAdaptiveGroups(
filter: { date_geq: $start, date_leq: $end, status: "deliveryFailed" }
limit: 10000
orderBy: [date_DESC]
) {
count
dimensions {
date
errorCause
sendingDomain
}
}
}
}
}按小时查询电子邮件发送量,有助于识别流量模式:
query EmailSendingHourlyVolume($zoneTag: string!, $start: Time!, $end: Time!) {
viewer {
zones(filter: { zoneTag: $zoneTag }) {
emailSendingAdaptiveGroups(
filter: { datetimeHour_geq: $start, datetimeHour_leq: $end }
limit: 10000
orderBy: [datetimeHour_ASC]
) {
count
dimensions {
datetimeHour
status
}
}
}
}
}查询单封电子邮件事件以排查特定投递问题。此查询使用 emailSendingAdaptive 数据集,并按 datetime(Time 类型)过滤:
query RecentEmailEvents($zoneTag: string!, $start: Time!, $end: Time!) {
viewer {
zones(filter: { zoneTag: $zoneTag }) {
emailSendingAdaptive(
filter: { datetime_geq: $start, datetime_leq: $end }
limit: 50
orderBy: [datetime_DESC]
) {
datetime
from
to
subject
status
eventType
sendingDomain
messageId
errorCause
errorDetail
dkim
dmarc
spf
isSpam
}
}
}
}查询给定日期范围内已路由电子邮件的数量,按 date 和 status 分组:
query EmailRoutingByStatus($zoneTag: string!, $start: Date!, $end: Date!) {
viewer {
zones(filter: { zoneTag: $zoneTag }) {
emailRoutingAdaptiveGroups(
filter: { date_geq: $start, date_leq: $end }
limit: 10000
orderBy: [date_DESC]
) {
count
dimensions {
date
status
}
}
}
}
}查看哪些路由规则匹配了电子邮件,按 ruleMatched 和 action 分组:
query EmailRoutingRuleActivity($zoneTag: string!, $start: Date!, $end: Date!) {
viewer {
zones(filter: { zoneTag: $zoneTag }) {
emailRoutingAdaptiveGroups(
filter: { date_geq: $start, date_leq: $end }
limit: 10000
orderBy: [date_DESC]
) {
count
dimensions {
date
ruleMatched
action
}
}
}
}
}查询单条路由事件以进行故障排查:
query RecentRoutingEvents($zoneTag: string!, $start: Time!, $end: Time!) {
viewer {
zones(filter: { zoneTag: $zoneTag }) {
emailRoutingAdaptive(
filter: { datetime_geq: $start, datetime_leq: $end }
limit: 50
orderBy: [datetime_DESC]
) {
datetime
from
to
subject
status
action
ruleMatched
messageId
errorDetail
dkim
dmarc
spf
isSpam
}
}
}
}- Email logs — 在仪表板中查看单封电子邮件活动。
- Audit logs — 跟踪配置更改。
- GraphQL Analytics API — 完整的 GraphQL API 参考。