Resend 是面向开发者的事务邮件 API,负责发送、追踪与管理邮件,让你专注业务而无需自建 SMTP 基础设施。TanStack Ship 通过 Resend 实现以下能力:
- 魔法链接登录 — 用户输入邮箱后收到一次性登录链接(
src/lib/auth.ts) - 邮件营销活动 — 管理端创建 HTML 活动,经 Cloudflare Queues 异步投递(
email-campaign-queue) - 生命周期工作流 — 自动化序列邮件(
workflow-queue)
重要
推送代码到 GitHub 不会更新生产环境密钥。
RESEND_API_KEY需通过.dev.vars(本地)或wrangler secret put(生产)配置。
注册与 API Key
- 访问 resend.com 注册账号
- 进入 API Keys → Create API Key
- 复制以
re_开头的密钥 - 写入本地
.dev.vars:
RESEND_API_KEY=re_xxxxxxxx
- 生产环境执行:
pnpm wrangler secret put RESEND_API_KEY
须知
API Key 等同于发信凭证,不要提交到 Git 或暴露在客户端代码中。泄露后立即在 Resend 控制台撤销并轮换。
配置发信地址 EMAIL_FROM
EMAIL_FROM 决定收件人看到的发件人名称与地址,格式示例:
EMAIL_FROM="TanStack Ship <no-reply@your-domain.com>"
| 要求 | 说明 |
|---|---|
| 域名验证 | @ 后的域名必须在 Resend Domains 中显示 Verified |
| 显示名称 | 引号包裹时可包含空格,如 "My App <no-reply@example.com>" |
| 生产存放 | 非敏感,可放 wrangler.jsonc → vars,或作为 secret |
域名与 DNS 验证
添加域名
- Resend Dashboard → Domains → Add Domain
- 输入发信根域(如
your-domain.com) - 按页面提示添加 DNS 记录(通常含 SPF、DKIM 等)
- 若 DNS 托管在 Cloudflare,可尝试 Sign in to Cloudflare 一键导入前三条记录
_dmarc记录需在 Cloudflare DNS 页面手动添加- 全部通过后 Status 为 Verified
须知
若长时间未通过验证,在 Domains 页点击 Restart 重新检测。邮件相关 DNS 记录建议设为 DNS only(灰云),避免代理影响验证。
DMARC 分阶段策略
| 阶段 | 记录值 | 用途 |
|---|---|---|
| 初期监控 | v=DMARC1; p=none; rua=mailto:dmarc@your-domain.com; pct=100 | 仅收集报告,不影响投递 |
| 中期隔离 | v=DMARC1; p=quarantine; rua=mailto:dmarc@your-domain.com; pct=100 | 失败邮件进垃圾箱 |
| 最终拒绝 | v=DMARC1; p=reject; rua=mailto:dmarc@your-domain.com; pct=100 | 拒绝未通过验证的邮件,防域名伪造 |
将 rua 替换为你接收聚合报告的真实邮箱。
代码中的用法
魔法链接在认证流程中同步调用 Resend API:
// src/lib/auth.ts
const resend = new Resend(requireEnv('RESEND_API_KEY'))
await resend.emails.send({
from: requireEnv('EMAIL_FROM'),
to: input.email,
subject: 'Your sign-in link',
html: `<p><a href="${url}">Sign in</a></p>`,
})
批量营销邮件在 Queue Consumer 中调用,参见 src/server/email-campaign-queue.ts。
须知
TanStack Ship 未使用
RESEND_SEGMENT_ID。联系人可在 Resend Audiences 中管理,或使用 Dashboard 的 Broadcast 发送营销邮件。
环境变量汇总
| 变量 | 敏感 | 本地 | 生产 |
|---|---|---|---|
RESEND_API_KEY | ✓ | .dev.vars | wrangler secret |
EMAIL_FROM | .dev.vars | wrangler.jsonc vars |
完整变量表见 环境变量 页。
验证清单
完成配置后逐项确认:
- 登录页输入邮箱,触发魔法链接
- Resend → Emails 查看发送状态为 Delivered
- Resend → Logs 有对应 API 请求
- 收件箱收到邮件,链接可完成登录
- (可选)管理端
/dashboard/admin/...创建测试邮件活动,确认 Queue 消费成功
警告
若本地能发、生产不能发,检查
wrangler secret list是否包含RESEND_API_KEY,以及EMAIL_FROM域名在生产环境同样已 Verified。