电商篇:客户支持——配置自定义域名邮箱
本文是全栈电商微服务从 0 到 1 再到 10系列的第 5 篇。
一个电商项目上线后,订单、激活码和退款都需要一个稳定、可信的客服入口。本篇配置 support@example.com,目标是:用户可以发邮件给客服,你可以在自己的邮箱中接收并回复;网站或后台也可以通过 Resend 发送自动通知。
先分清三个角色
Cloudflare Email Routing:接收并转发邮件Resend:从自定义域名发送邮件你的后端 API:安全保存密钥并调用 ResendResend 不是完整的收件箱。它适合发信和查看发送状态;接收邮件仍然需要 Cloudflare Email Routing、Zoho Mail、Google Workspace 等邮件接收服务。
方案一:个人邮箱接收并回复
这是个人项目最简单的方案:
用户 → support@example.com → Cloudflare Email Routing → 你的个人邮箱Cloudflare Email Routing 负责收件转发,不提供完整的邮箱网页收件箱,也不等同于 SMTP 发件服务。
1. 在 Cloudflare 添加域名
- 注册Cloudflare账号并添加域名
- 将非Cloudflare注册的域名注册商的DNS转到Cloudflare,例如腾讯云,把Cloudflare提供的DNS地址分别填入,如图所示

- 打开Cloudflare Email Routing dashboard 添加并验证个人邮箱,用于接收邮件:

- 之后添加转发规则:

- 向
support@example.com发送一封测试邮件。
2. 配置回复地址
如果直接从个人邮箱回复,邮件可能显示个人邮箱地址。为了让用户看到 support@example.com,在你的邮箱服务中添加“发送别名”或“通过此地址发送”:
发件人:support@example.com回复地址:support@example.com邮箱服务通常会要求验证地址所有权。若个人邮箱无法发送该别名,可以使用 Resend 作为发件服务,见后面的方案二。
方案二:Cloudflare 收件 + Resend 发件
推荐的产品化结构如下:
接收:用户 → support@example.com → Cloudflare → 你的邮箱发送:网站/后台 → 你的后端 API → Resend → 用户邮箱这样可以把“客服收件”和“系统发信”分开,既简单又容易扩展订单通知、激活码邮件和退款处理通知。
在 Resend 添加自定义域名
- 登录 Resend 控制台。
- 进入 Domains,添加
example.com。 - 复制 Resend 给出的 DNS 验证记录。
- 在 Cloudflare DNS 中添加这些记录。
- 邮件验证所需记录保持 DNS only,除非 Resend 明确要求其他设置。
- 回到 Resend 点击 Verify。
通常需要配置 Resend 要求的 SPF、DKIM 和 Return-Path 记录。不要凭记忆填写值,以控制台当前显示为准。
建议配置 DMARC。初期可以使用监控模式:
主机:_dmarc类型:TXT值:v=DMARC1; p=none; rua=mailto:dmarc@example.com确认 SPF、DKIM 和正式发信稳定后,再考虑将策略提高到 quarantine 或 reject。如果没有 dmarc@example.com 收件地址,先不要填写 rua,或使用你实际管理的报告邮箱。
Resend API 的安全接入
不要把 Resend API Key 放进浏览器前端、静态网页或桌面应用。正确结构是:
浏览器 → 你的后端接口 → Resend API服务端示例:
import { Resend } from 'resend';
const resend = new Resend(process.env.RESEND_API_KEY);
export async function POST(request: Request) { const { to, subject, text } = await request.json();
if (typeof to !== 'string' || typeof subject !== 'string' || typeof text !== 'string') { return new Response('Invalid request', { status: 400 }); }
const result = await resend.emails.send({ from: 'Scorpius Support <support@example.com>', to, subject, text, replyTo: 'support@example.com', });
return Response.json(result);}API Key 只放在服务端环境变量:
RESEND_API_KEY=re_xxxxxxxxx生产环境还必须增加登录鉴权、CSRF 防护、限流、收件人校验、模板转义、发送日志和退信处理。否则公开接口可能被滥用发送垃圾邮件。
电商项目需要准备的三类页面
软件许可协议
至少说明:
- 授权对象、套餐、期限和设备数量
- 允许的个人或商业使用范围
- 禁止转售、出租、破解和绕过授权
- 软件按现状提供及兼容性边界
- 许可证到期、撤销和复验规则
- 协议更新方式和联系方式
隐私政策
至少说明:
- 收集哪些订单、设备或联系信息
- 为什么收集、保存多久、谁可以访问
- 支付平台、许可证服务器和邮件服务商分别处理什么数据
- 剪贴板内容是否上传
- 用户如何申请删除、更正或咨询
- 数据泄露和第三方服务变化时如何通知
退款与支持规则
至少说明:
- 购买前需要确认平台、套餐、期限和设备数量
- 已使用激活码与未使用激活码的处理方式
- 重复购买、无法激活、换机和许可证异常如何处理
- 支持渠道、响应范围和需要提供的诊断信息
- 不要让用户发送密码、激活码完整内容或敏感剪贴板内容
页面文案应以实际经营规则和适用法律为准;示例不能替代法律审核。
上线检查清单
- Cloudflare 已验证域名并启用 Email Routing
-
support@example.com可以收到测试邮件 - 回复时发件人不会意外暴露个人邮箱
- Resend 显示域名已验证
- SPF、DKIM 和 DMARC 已配置并通过测试
-
RESEND_API_KEY只存在于服务端 - 发信接口已鉴权、限流并记录错误
- 网站已发布软件许可协议、隐私政策和退款/支持规则
- 客服邮箱已经替换为真实地址,而不是示例地址
费用与边界
Cloudflare Email Routing、Resend、域名和服务器分别有自己的套餐、免费额度与计费规则,应以上线时控制台为准。e签宝等电子签名平台解决的是合同签署和存证,不负责邮件路由、邮件发送、macOS 应用签名或许可证激活。
个人项目可以先使用 Cloudflare 转发加个人邮箱;当需要自动发信、订单通知和客服后台时,再接入 Resend 后端 API;当出现企业采购或高客单价授权,再增加电子合同流程。