跳转到内容
搜索文档

电子邮件标头

哪些电子邮件标头可以由您设置,哪些是自动生成的,以及它们如何被验证

最后更新 查看 MarkdownAgent 设置

在使用 Cloudflare Email Service 发送电子邮件时,您可以使用 Workers APIREST API 中的 headers 字段来设置自定义标头。Email Service 使用基于允许列表的方法 —— 仅接受明确批准的标头。任何不在允许列表上的标头(并且不是以 X- 为前缀的自定义标头)都将在 API 级别被拒绝并返回明确的错误。

当通过 SMTP 发送时,请直接在 MIME 消息中设置标头,而不是通过 headers 字段。同样适用此允许列表。

平台控制的标头

这些标头是由 Cloudflare Email Service 基础结构自动生成的。您无法设置或覆盖它们。如果您在 headers 对象中包含其中任何一个,API 会返回 E_HEADER_NOT_ALLOWED

标头 行为
Date 接收时设置的 UTC 时间戳
Message-ID 与 Cloudflare 域一起生成以进行唯一跟踪
MIME-Version 始终为 1.0
Content-Type 根据提供的正文部分生成
Content-Transfer-Encoding 根据内容分析生成
DKIM-Signature 由 Cloudflare 基础结构签名
Return-Path 设置为 Cloudflare 退信处理程序
Received 根据 RFC 5321 在每一跳添加
Feedback-ID 为 Google Postmaster Tools 信誉反馈生成
ARC-* 用于转发的身份验证链
TLS-Required 平台控制的传输基础结构设置
TLS-Report-Domain TLS 失败报告路由到 Cloudflare 基础结构
TLS-Report-Submitter 引用 Cloudflare 发送域
CFBL-Address 投诉反馈循环地址 (RFC 9477)
CFBL-Feedback-ID 投诉反馈循环 ID (RFC 9477)

与一等 API 字段相对应的标头 —— FromToCcBccSubjectReply-To —— 也将在 headers 对象中被拒绝并返回 E_HEADER_USE_API_FIELD。请改用专门的 API 字段(Workers 的 fromtoccbccsubjectreplyTo / REST 的 reply_to)来设置这些内容。

允许列表的自定义标头

这些标头可以通过 headers 字段设置。任何未在此列出且不以 X- 开头的标头都将被拒绝并返回 E_HEADER_NOT_ALLOWED

线程和回复标头

标头 RFC 备注
In-Reply-To RFC 5322 对于所有客户端中的电子邮件线程至关重要
References RFC 5322 对于所有客户端中的电子邮件线程至关重要

列表管理标头

标头 RFC 备注
List-Unsubscribe RFC 2369 必须包含 <https://...> 和/或 <mailto:...> URI。HTTP(非 TLS)URI 将被拒绝。Gmail 和 Yahoo 要求批量发送者提供此项。始终根据 RFC 8058 具有 DKIM 签名。
List-Unsubscribe-Post RFC 8058 必须完全是 List-Unsubscribe=One-Click(区分大小写)。需要带有 HTTPS URI 的 List-Unsubscribe
List-Id RFC 2919 列表标识
List-Archive RFC 2369 列表归档的 URL
List-Help RFC 2369 帮助的 URL
List-Owner RFC 2369 列表所有者的联系方式
List-Post RFC 2369 发布的地址
List-Subscribe RFC 2369 订阅 URL 或地址
Precedence 事实标准 接受的值:bulklistjunk

自动消息识别

标头 RFC 备注
Auto-Submitted RFC 3834 值:auto-generatedauto-repliedauto-notified

内容和显示

标头 RFC 备注
Content-Language RFC 3282 内容语言(例如 enfr
Keywords RFC 5322 消息关键字(对于多个值,以逗号分隔)
Comments RFC 5322 附加注释(对于多个值,以逗号分隔)
Importance RFC 2156 值:highnormallow
Sensitivity RFC 2156 值:personalprivatecompany-confidential
Organization RFC 4021 发件人组织名称

投递和通知

标头 RFC 备注
Require-Recipient-Valid-Since RFC 7293 地址重用保护

现代标准

标头 RFC 备注
Archived-At RFC 5064 消息被归档的 URL

自定义 X-标头

允许任何以 X- 开头的标头。这涵盖了常见的标头,如 X-MailerX-PriorityX-Campaign-ID,以及您的应用程序所需的任何自定义跟踪标头。

  • 名称格式: X-[A-Za-z0-9\-_]+,最长 100 个字符
  • 值: UTF-8,最多 2,048 字节
  • 不限制 X-标头的数量(受 16 KB 总有效负载限制)

示例用法

curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/email/sending/send" \
  --header "Authorization: Bearer <API_TOKEN>" \
  --header "Content-Type: application/json" \
  --data '{
    "to": "user@example.com",
    "from": "notifications@yourdomain.com",
    "subject": "Your weekly digest",
    "html": "<h1>Weekly Digest</h1>",
    "headers": {
      "In-Reply-To": "<original-message-id@yourdomain.com>",
      "References": "<original-message-id@yourdomain.com>",
      "List-Unsubscribe": "<https://yourdomain.com/unsubscribe?id=abc123>",
      "List-Unsubscribe-Post": "List-Unsubscribe=One-Click",
      "X-Campaign-ID": "weekly-digest-2026-03",
      "X-User-Segment": "premium"
    }
  }'
const response = await env.EMAIL.send({
	to: "user@example.com",
	from: "notifications@yourdomain.com",
	subject: "Your weekly digest",
	html: "<h1>Weekly Digest</h1>",
	headers: {
		// Threading
		"In-Reply-To": "<original-message-id@yourdomain.com>",
		References: "<original-message-id@yourdomain.com>",

		// List management (required by Gmail/Yahoo for bulk senders)
		"List-Unsubscribe": "<https://yourdomain.com/unsubscribe?id=abc123>",
		"List-Unsubscribe-Post": "List-Unsubscribe=One-Click",

		// Custom tracking
		"X-Campaign-ID": "weekly-digest-2026-03",
		"X-User-Segment": "premium",
	},
});

标头限制

限制
最大的允许列表(非 X)自定义标头数量 20
标头名称最大长度 100 字节
标头值最大长度 2,048 字节
自定义标头的总有效负载 16 KB

所有自定义标头的总有效负载计算方式为 sum(len(name) + 2 + len(value) + 2)(即:名称 + : + 值 + CRLF)。允许列表的标头和 X-标头将一起计入此限制。

验证规则

  1. 标头名称 — 仅限 ASCII,无空格,无冒号,1–100 个字符。允许列表的标头必须匹配 [A-Za-z0-9\-]+。X-标头必须匹配 X-[A-Za-z0-9\-_]+(仅允许在 X-标头中使用下划线)。
  2. 标头值 — 允许使用 UTF-8,最多 2,048 字节,无裸 CR/LF。拒绝空值。
  3. 不区分大小写匹配 — 根据 RFC 5322 §2.2,标头名称的匹配不区分大小写。生成的邮件中使用允许列表的规范大小写形式。
  4. 正确的行折叠 — 超过 78 个字符的过长标头将使用 CRLF+WSP 而非 MIME 编码根据 RFC 5322 折叠。
  5. 单次出现headers 类型为 { [key]: string },因此每个标头名称最多可以出现一次。对于支持多个值(如 KeywordsComments)的标头,请在一个字符串中使用逗号分隔值。

错误代码

错误代码 条件 示例消息
E_HEADER_NOT_ALLOWED 标头受平台控制或不在允许列表中 Header 'Date' is not allowed. It is auto-generated by the platform.
E_HEADER_USE_API_FIELD 标头对应一等 API 字段 Header 'From' must be set via the 'from' API field, not the 'headers' object.
E_HEADER_VALUE_INVALID 标头值格式不正确或为空 Header 'List-Unsubscribe' must contain angle-bracket HTTPS or mailto URI(s).
E_HEADER_VALUE_TOO_LONG 标头值超过 2,048 字节限制 Header 'X-Campaign-ID' value exceeds 2048 byte limit.
E_HEADER_NAME_INVALID 标头名称包含无效字符或超过 100 字节 Header name 'Bad Header!' contains invalid characters.
E_HEADERS_TOO_LARGE 自定义标头的总有效负载超过 16 KB Total custom headers payload (17.2KB) exceeds 16KB limit.
E_HEADERS_TOO_MANY 提供的允许列表(非 X)自定义标头太多 21 allowlisted headers provided, maximum is 20.

这篇文档对您有帮助吗?