# 电子邮件路由 API 参考
## Worker 运行时 API
### 邮件处理器接口
typescript
interface ExportedHandler {
email?(message: ForwardableEmailMessage, env: Env, ctx: ExecutionContext): void | Promise;
}
### ForwardableEmailMessage
传入邮件的主要接口:
typescript
interface ForwardableEmailMessage {
readonly from: string; // 信封发件人 (例如 "
[email protected]")
readonly to: string; // 信封收件人 (例如 "
[email protected]")
readonly headers: Headers; // Web API Headers 对象
readonly raw: ReadableStream; // 原始 MIME 消息流
setReject(reason: string): void;
forward(rcptTo: string, headers?: Headers): Promise;
}
**关键属性:**
| 属性 | 类型 | 描述 |
|----------|------|-------------|
| `from` | `string` | 信封发件人 (MAIL FROM),而非标头中的 From |
| `to` | `string` | 信封收件人 (RCPT TO),而非标头中的 To |
| `headers` | `Headers` | 邮件标头 (主题, From, To 等) |
| `raw` | `ReadableStream` | 原始 MIME 消息 (仅限消耗一次) |
**方法:**
- `setReject(reason)`: 使用退信消息拒绝邮件
- `forward(rcptTo, headers?)`: 转发到已验证的目标,可选择添加标头
### Headers 对象
标准的 Web API Headers 接口:
typescript
// 访问标头
const subject = message.headers.get("subject");
const from = message.headers.get("from");
const messageId = message.headers.get("message-id");
// 检查垃圾邮件评分
const spamScore = parseFloat(message.headers.get("x-cf-spamh-score") || "0");
if (spamScore > 5) {
message.setReject("检测到垃圾邮件");
}
### 常见标头
`subject`, `from`, `to`, `x-cf-spamh-score` (垃圾邮件评分), `message-id` (去重), `dkim-signature` (认证)
### 信封地址 vs 标头地址
**关键区别:**
typescript
// 信封地址 (路由、认证检查)
message.from // "
[email protected]" (实际发件人)
message.to // "
[email protected]" (您的地址)
// 标头地址 (显示、面向用户)
message.headers.get("from") // "Alice "
message.headers.get("to") // "Bob "
**使用信封地址进行:**
- 认证/SPF 检查
- 路由决策
- 退信处理
**使用标头地址进行:**
- 向用户显示
- 回复逻辑
- 面向用户的过滤
## SendEmail 绑定
用于事务性消息的出站邮件 API。
### 配置
c
// wrangler.jso