> ## 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-tw/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-tw/docs/web/setup-email.md)

[接下來收集其餘提供商金鑰](https://supastack.dev/zh-tw/docs/web/provider-keys.md)


如果你想繼續完成設定，可以閱讀《[設定 Amazon SES 郵件](https://supastack.dev/zh-tw/docs/web/aws-ses.md)》。


## 下一篇

[設定 Amazon SES 郵件](https://supastack.dev/zh-tw/docs/web/aws-ses.md)
