Email 是 Agent 通过收件箱而非聊天 UI 与用户或系统交互的通信渠道。Agent 可发送出站邮件、接收入站邮件、将回复路由回现有会话,并将邮件内容作为 Agent Workflow 的一部分。
在以下场景使用 Email:
- 发送通知、摘要、收据或跟进消息。
- 通过 Cloudflare Email Service 处理入站消息。
- 从回复继续对话。
- 通过 Agent 路由支持、销售或运营 Workflow。
出站邮件在 Worker 中使用 send_email binding。入站邮件使用 Email Service 路由规则将消息发送到 Worker,Agent 可在决定如何响应前解析发件人、收件人、头和正文。
对于回复处理,在回复地址、消息元数据或头中包含稳定标识符,以便 Worker 将后续消息路由到正确的 Agent 实例。
实现 onEmail() 处理入站邮件,Agent 需要发送响应时使用 sendEmail() 或 replyToEmail()。
import { Agent, callable, routeAgentEmail } from "agents";
import { createAddressBasedEmailResolver } from "agents/email";
export class EmailAgent extends Agent {
@callable()
async sendWelcomeEmail(to) {
await this.sendEmail({
binding: this.env.EMAIL,
to,
from: "support@yourdomain.com",
replyTo: "support@yourdomain.com",
subject: "Welcome",
text: "Thanks for signing up. Reply to this email if you need help.",
});
}
async onEmail(email) {
await this.replyToEmail(email, {
fromName: "Support Agent",
body: "Thanks for your email. We received it.",
});
}
}
export default {
async email(message, env) {
await routeAgentEmail(message, env, {
resolver: createAddressBasedEmailResolver("EmailAgent"),
});
},
};import { Agent, callable, routeAgentEmail } from "agents";
import { createAddressBasedEmailResolver, type AgentEmail } from "agents/email";
export class EmailAgent extends Agent {
@callable()
async sendWelcomeEmail(to: string) {
await this.sendEmail({
binding: this.env.EMAIL,
to,
from: "support@yourdomain.com",
replyTo: "support@yourdomain.com",
subject: "Welcome",
text: "Thanks for signing up. Reply to this email if you need help.",
});
}
async onEmail(email: AgentEmail) {
await this.replyToEmail(email, {
fromName: "Support Agent",
body: "Thanks for your email. We received it.",
});
}
}
export default {
async email(message, env) {
await routeAgentEmail(message, env, {
resolver: createAddressBasedEmailResolver("EmailAgent"),
});
},
} satisfies ExportedHandler<Env>;为出站邮件添加 send_email binding,然后配置 Email Service 路由规则将入站邮件发送到 Worker。
{
"$schema": "./node_modules/wrangler/config-schema.json",
"send_email": [
{
"name": "EMAIL",
"remote": true
}
]
}[[send_email]]
name = "EMAIL"
remote = trueremote = true 选项让你在 wrangler dev 本地开发期间调用真实的 Email Service API。
完整演练(包括域名设置、binding、入站路由和安全回复)请参阅 Email Agent 示例。
邮件 Agent
使用 Cloudflare Email Service 和 Agents SDK 构建可发送、接收、路由和回复邮件的 Agent。
Email Service
使用 Cloudflare Email Service 路由、接收和发送邮件。
从 Workers 发送邮件
使用 Workers API 发送出站邮件。