Cloudflare Email Service でメールを送るとき、Workers API または REST API の headers フィールドでカスタムヘッダーを設定できます。Email Service は 許可リスト方式 です。明示的に許可されたヘッダーだけを受け付けます。許可リストになく、X- プレフィックスのカスタムヘッダーでもないヘッダーは、API 呼び出し時に明確なエラーで拒否されます。
SMTP で送る場合は、headers フィールドではなく MIME メッセージに直接ヘッダーを設定します。同じ許可リストが適用されます。
これらのヘッダーは Cloudflare Email Service のインフラが自動生成します。設定や上書きはできません。headers オブジェクトに含めると、API は E_HEADER_NOT_ALLOWED を返します。
| Header | Behavior |
|---|---|
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 フィールドに対応するヘッダー(From、To、Cc、Bcc、Subject、Reply-To)も、headers オブジェクトでは E_HEADER_USE_API_FIELD で拒否されます。代わりに専用の API フィールド(Workers では from、to、cc、bcc、subject、replyTo / REST では reply_to)で設定します。
これらのヘッダーは headers フィールドで設定できます。ここになく、X- で始まらないヘッダーは E_HEADER_NOT_ALLOWED で拒否されます。
許可されていないヘッダーが含まれると、Email Service は送信リクエスト全体を拒否します。ヘッダーを取り除いて送信を続けることはありません。
| Header | RFC | Notes |
|---|---|---|
In-Reply-To |
RFC 5322 ↗ | すべてのクライアントでメールスレッドに必須 |
References |
RFC 5322 ↗ | すべてのクライアントでメールスレッドに必須 |
Thread-Index |
Microsoft(非標準) | Outlook と Exchange Online が使う会話インデックス |
Thread-Topic |
Microsoft(非標準) | Outlook と Exchange Online が使う会話の件名 |
| Header | RFC | Notes |
|---|---|---|
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 |
事実上の標準 | 受け付ける値: bulk、list、junk |
| Header | RFC | Notes |
|---|---|---|
Auto-Submitted |
RFC 3834 ↗ | 値: auto-generated、auto-replied、auto-notified |
| Header | RFC | Notes |
|---|---|---|
Content-Language |
RFC 3282 ↗ | コンテンツの言語(例: en、fr) |
Keywords |
RFC 5322 ↗ | メッセージのキーワード(複数値はカンマ区切り) |
Comments |
RFC 5322 ↗ | 追加コメント(複数値はカンマ区切り) |
Importance |
RFC 2156 ↗ | 値: high、normal、low |
Priority |
RFC 2156 ↗ | 値: normal、non-urgent、urgent |
Sensitivity |
RFC 2156 ↗ | 値: personal、private、company-confidential |
Organization |
RFC 4021 ↗ | 送信者の組織名 |
| Header | RFC | Notes |
|---|---|---|
Require-Recipient-Valid-Since |
RFC 7293 ↗ | アドレス再利用の保護 |
Expires |
RFC 2156 ↗ | メッセージが無効になる日時 |
Reply-By |
RFC 2156 ↗ | 返信を求める期限の日時 |
| Header | RFC | Notes |
|---|---|---|
Archived-At |
RFC 5064 ↗ | メッセージのアーカイブ URL |
X- で始まるヘッダーはすべて許可されます。X-Mailer、X-Priority、X-Campaign-ID などの一般的なヘッダーや、アプリケーションが必要とするカスタムの追跡ヘッダーも対象です。
- 名前の形式:
X-[A-Za-z0-9\-_]+、最大 100 文字 - 値: UTF-8、最大 2,048 バイト
- 件数制限なし(合計ペイロード 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",
},
});| Limit | Value |
|---|---|
| 許可リスト(非 X)のカスタムヘッダーの上限 | 20 |
| ヘッダー名の最大長 | 100 bytes |
| ヘッダー値の最大長 | 2,048 bytes |
| カスタムヘッダーの合計ペイロード | 16 KB |
合計ペイロードは、すべてのカスタムヘッダーについて sum(len(name) + 2 + len(value) + 2)(名前 + : + 値 + CRLF)で計算します。許可リストのヘッダーと X-headers は、この上限にまとめて計上されます。
- ヘッダー名 — ASCII のみ、スペースなし、コロンなし、1〜100 文字。許可リストのヘッダーは
[A-Za-z0-9\-]+に一致する必要があります。X-headers はX-[A-Za-z0-9\-_]+に一致する必要があります(アンダースコアは X-headers でのみ許可)。 - ヘッダー値 — UTF-8 可、最大 2,048 バイト、裸の CR/LF は不可。空の値は拒否されます。
- 大文字小文字を区別しない照合 — ヘッダー名は RFC 5322 §2.2 ↗ に従い、大文字小文字を区別せず照合します。生成されるメッセージでは、許可リストの正規の大文字小文字を使います。
- 適切な行折り — 長いヘッダーは RFC 5322 に従い、78 文字で CRLF+WSP を使って折り返します。MIME エンコードは使いません。
- 単一出現 —
headersの型は{ [key]: string }のため、各ヘッダー名は最大 1 回です。複数値をサポートするヘッダー(KeywordsやCommentsなど)は、1 つの文字列にカンマ区切りで指定します。
| Error Code | When | Example message |
|---|---|---|
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. |