> ## Documentation Index
> Fetch the complete documentation index at: https://supastack.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For the full documentation corpus in one file, fetch: https://supastack.dev/llms-full.txt

# 添加 Resend 邮件

创建免费的 Resend 账户，验证发件域名，切换 EMAIL_PROVIDER，让验证码和收据送达真实收件箱。

## 初学者演练

前提条件：应用在本地运行（5 分钟启动）。免费起步——不需要卡，Resend 免费档足够覆盖开发用量。

快速术语：`EMAIL_PROVIDER=local` 是默认——消息写进内置的 `/mail-preview` 页面，绝不离开你的机器，开发期间很好用。Resend 是负责投递到真实收件箱的适配器。`EMAIL_FROM` 是模板使用的发件人身份；其地址必须在 Resend 已验证的域名上。DNS 记录是你粘贴到域名注册商或 Cloudflare 的几行内容，让收件方邮箱信任你的发件人。

你要创建的：一个 Resend 账户、一个已验证的发件域名和一个 API 密钥——域名环节是唯一要等的部分，DNS 传播从几分钟到几小时不等。

[设置数据库](https://supastack.dev/zh/docs/web/setup-database.md)


## 创建 Resend 账户

1. 打开 [resend.com](https://resend.com) → Sign up，确认你的邮箱——就进入仪表板了。

2. 先用免费档——甚至在拥有域名之前，你也可以从 Resend 的共享发件人发测试邮件，下一节会讲到。


## 验证你的发件域名

无域名快速试用：`onboarding@resend.dev` 地址可以立即用作 `EMAIL_FROM`——但它只投递到你注册用的邮箱，永远不会发给用户。用它确认管线能跑通，然后做正式设置。

1. 打开 Domains → Add Domain，输入你要发件的域名（如 `yourdomain.com`；`mail.yourdomain.com` 这样的子域名也行，还能让记录更整洁）。

2. Resend 列出要创建的 DNS 记录——DKIM TXT 记录加上按账户年龄不同的 MX/SPF 或 CNAME 条目。把它们逐条加到你的 DNS 托管方：域名注册商的 DNS 页面，或已迁移 nameserver 时用 Cloudflare。在 Cloudflare 上，邮件记录保持代理云朵为灰色（DNS only）——被代理的记录永远无法通过验证。

3. 回到 Resend 点击 Verify。预期结果：域名翻转为 Verified。传播时间从几分钟到一天不等；域名页面会指出仍未解析的那条记录。

验证通过后，该域名上的任意地址都能做发件人——`hello@`、`no-reply@`，`EMAIL_FROM` 用什么都可以——不需要按地址注册。


## 创建 API 密钥

1. 打开 API Keys → Create API Key。

2. Permission：Sending access 就够——套件只发信。按环境给密钥命名（`production`、`local`），这样泄露的开发密钥可以吊销而不影响生产。

3. 现在就复制 `re_…` 密钥——只显示一次。丢了就再建一个。


## 把值加入应用

在 `apps/web/.env.local` 中设置下面几行。`RESEND_API_KEY` 仅限服务端——绝不 `NEXT_PUBLIC_`/`EXPO_PUBLIC_`，绝不提交；`EMAIL_PROVIDER` 和 `EMAIL_FROM` 是普通配置。编辑后重启开发服务器。

`EMAIL_FROM` 必须在已验证域名上：`onboarding@resend.dev` 只能到你自己的注册邮箱，未验证域名会被 Resend 以 403 拒绝。

```
# apps/web/.env.local
EMAIL_PROVIDER=resend
EMAIL_FROM="Your Product <hello@yourdomain.com>"
RESEND_API_KEY=re_…
```


## 验证与排错

重启，打开 `/auth`，向你可控的真实收件箱请求登录验证码。预期结果：消息到达，Resend → Emails 显示绿色状态的送达——退回和错误原因也在这个日志里。

什么都没发出？确认 `EMAIL_PROVIDER=resend` 真的存进了 `apps/web/.env.local` 并重启。服务器日志里的 403 表示 `EMAIL_FROM` 不在已验证域名上——或者 `onboarding@resend.dev` 发给了别人。

以后想换提供商？`EMAIL_PROVIDER` 也接受 `ses`（配 AWS 密钥）以及 `postmark`、`sendgrid`、`mailgun`、`smtp`、`brevo` 传输——同样的 `EMAIL_FROM` 约定，不同的 env 名，全部列在 `.env.example` 中。邮件指南对它们做了比较。

[比较邮件提供商](https://supastack.dev/zh/docs/web/setup-email.md)

[接下来收集其余提供商密钥](https://supastack.dev/zh/docs/web/provider-keys.md)


如果你想继续完成设置，可以阅读《[设置 Amazon SES 邮件](https://supastack.dev/zh/docs/web/aws-ses.md)》。


## 下一篇

[设置 Amazon SES 邮件](https://supastack.dev/zh/docs/web/aws-ses.md)
