将发送到你域名的传入邮件路由到现有邮箱、用于处理的 Workers,或其他目标。
在使用 Email Routing 之前,请配置您的域名。
-
在 Cloudflare 仪表板中,转到 Compute(计算) > Email Service(电子邮件服务) > Email Routing。
Go to Email Routing ↗ -
选择 Onboard Domain(接入域名)。
-
从您的 Cloudflare 账户中选择一个域名。可以选择查看 Cloudflare 将添加到您的根域名的 DNS 记录:
- 用于将传入电子邮件路由到 Cloudflare 的 MX 记录。
- 用于 SPF 的 TXT 记录,以授权电子邮件路由。
- 用于 DKIM 的 TXT 记录,以为路由的电子邮件提供身份验证。
-
选择 Done(完成)。
域名添加成功后,您就可以开始路由电子邮件了。
你可以通过在仪表板中设置路由规则,或使用 Workers 处理邮件,来路由第一封邮件。
最简单的邮件路由方式是将其转发到现有电子邮件地址。
在创建路由规则之前,请添加并验证将接收转发邮件的目标地址。目标地址在账户级别管理,可在多个域名之间复用。
-
在 Cloudflare 仪表板中,前往 Compute(计算) > Email Service(电子邮件服务) > Email Routing(电子邮件路由) > Destination Addresses。
Go to Email Routing ↗ -
在 Destination addresses(目标地址) 下,在内联表单中输入要用作目标的电子邮件地址并提交。
-
打开 Cloudflare 发送到该地址的验证邮件,并选择 Verify email address(验证电子邮件地址)。
完整详情请参阅添加目标地址。
-
在 Cloudflare 仪表板中,前往 Compute(计算) > Email Service(电子邮件服务) > Email Routing(电子邮件路由)。
Go to Email Routing ↗ -
选择要创建电子邮件地址的域名。
-
选择 Routing Rules(路由规则) 选项卡。
-
选择 Create routing rule(创建路由规则)。
-
配置你的第一条规则(例如,将发送到
support@yourdomain.com的邮件转发到你的个人邮箱):- Email pattern(电子邮件模式):输入邮件的本地部分(例如
support@yourdomain.com的support),并选择你的域名 - Action(操作):Send to an email(发送到电子邮件)
- Destination(目标):你的个人电子邮件地址(例如
your-email@gmail.com)
- Email pattern(电子邮件模式):输入邮件的本地部分(例如
-
选择 Save(保存)。
验证路由规则是否生效:
-
从另一个电子邮件账户向新创建的地址(例如
support@yourdomain.com)发送邮件。请从与目标地址不同的账户发送。某些提供商会丢弃看起来来自同一账户又投递给该账户的邮件。 -
检查目标收件箱中的转发邮件。
-
若未立即看到邮件,请检查垃圾邮件文件夹。
使用 Workers 在转发或回复前,以自定义逻辑处理邮件。
-
创建新的 Worker 项目:
npm create cloudflare@latest email-processor提示时,选择 "Hello World" Worker 作为模板。然后进入项目目录:
cd email-processor -
安装用于创建邮件回复的所需软件包:
npm install mimetext -
在 Wrangler 配置文件中添加
nodejs_compat兼容性标志。mimetext软件包需要此标志:{ "compatibility_flags": ["nodejs_compat"], }compatibility_flags = [ "nodejs_compat" ] -
在
src/index.ts中创建邮件处理程序:import { EmailMessage } from "cloudflare:email"; import { createMimeMessage } from "mimetext"; // ============================================ // Configuration - Update these values // ============================================ const YOUR_DOMAIN = "yourdomain.com"; // Replace with your verified domain const FORWARD_TO_EMAIL = "your-team@example.com"; // Replace with where you want emails forwarded export default { async email(message, env, ctx): Promise<void> { const sender = message.from; const recipient = message.to; const subject = message.headers.get("subject") || ""; console.log( `Processing email from ${sender} to ${recipient} with subject ${subject}`, ); // Route based on recipient if (recipient.includes("support@")) { // Send auto-reply const msg = createMimeMessage(); const messageId = message.headers.get("Message-ID"); if (messageId) { msg.setHeader("In-Reply-To", messageId); msg.setHeader("References", messageId); } msg.setSender({ name: "Support Team", addr: `support@${YOUR_DOMAIN}`, }); msg.setRecipient(message.from); msg.setSubject(`Re: ${subject}`); // Add plain text version msg.addMessage({ contentType: "text/plain", data: "Thank you for contacting support. Your ticket number is 123.\n\nA member of our support team will get back to you shortly.", }); // Add HTML version msg.addMessage({ contentType: "text/html", data: "<p>Thank you for contacting support. Your ticket number is <strong>123</strong>.</p><p>A member of our support team will get back to you shortly.</p>", }); const replyMessage = new EmailMessage( `support@${YOUR_DOMAIN}`, message.from, msg.asRaw(), ); await message.reply(replyMessage); // Forward to support team await message.forward(FORWARD_TO_EMAIL); } else { // Default: forward to admin await message.forward(FORWARD_TO_EMAIL); } }, } satisfies ExportedHandler<Env>; -
部署 Worker:
npm run deploy
-
在 Cloudflare 仪表板中,前往 Compute(计算) > Email Service(电子邮件服务) > Email Routing(电子邮件路由)。
Go to Email Routing ↗ -
选择要配置路由的域名。
-
选择 Routing Rules(路由规则) 选项卡。
-
选择 Create routing rule(创建路由规则)。
-
配置 Worker 路由:
- Email pattern(电子邮件模式):输入邮件的本地部分(例如
support@yourdomain.com的support),并选择你的域名 - Action(操作):Send to a Worker(发送到 Worker)
- Worker:选择你的
email-processorWorker
- Email pattern(电子邮件模式):输入邮件的本地部分(例如
-
选择 Save(保存)。
配置路由规则后,测试其是否生效:
-
从你的个人电子邮件账户向已配置的地址(例如
support@yourdomain.com)发送邮件。 -
检查
FORWARD_TO_EMAIL收件箱中的转发邮件。 -
若收件人邮箱为
support@,你还应在个人邮箱中收到自动回复。
现在你可以路由邮件,可进一步探索高级功能: