找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

4512

积分

0

好友

632

主题
发表于 1 小时前 | 查看: 2| 回复: 0

做出海产品,邮件服务是必不可少的一环。无论是用户注册时的验证邮件、付款成功的收据通知、密码重置的链接发送,还是未来开展 Newsletter 运营,都离不开一个可靠且送达率高的邮件系统。

在接入专业邮件服务之前,我曾使用过 Supabase 自带的邮件功能进行测试,但发现 Gmail 邮箱始终无法收到邮件,甚至在垃圾箱里也找不到踪迹。这主要是因为 Supabase 免费版使用的是共享 SMTP 服务,发件域名并非你自己的域名,因此很容易被 Gmail 等邮箱服务商直接拦截或拒收。

为何选择 Resend

市面上可供选择的邮件服务提供商不少。SendGrid 作为老牌服务商,稳定性好,但配置相对复杂,管理面板对新手也不够友好。AWS SES 价格最具优势,5万封邮件仅需5美元,但你需要自行处理 IAM 权限、SNS 回调、退信处理等一系列基础设施。Mailgun 功能全面,但其免费额度较少。

最终我选择了 Resend,主要基于以下几点考虑:

  • API 极其简洁:发送一封邮件仅需寥寥数行代码。
  • 免费额度实用:免费版每月提供 3,000 封邮件,对于产品早期阶段完全够用。
  • 域名验证快捷:只需在域名服务商处添加几条 DNS 记录,等待几分钟即可完成验证。
  • 内置受众管理:自带 Audience 功能,为后续开展 Newsletter 运营省去了集成其他服务的麻烦。
  • 对现代技术栈友好:Resend 团队同时也是 React Email 的创建者,因此对 Next.js 项目有着良好的支持。如果你的技术栈是 React + Next.js,集成体验会非常顺畅。

Resend 邮件服务套餐价格与功能对比

注册与添加域名

首先,访问 resend.com 注册账号。免费版允许添加 1 个域名。登录后进入 Dashboard,导航至 DomainsAdd Domain

这里我建议使用一个子域名,例如 mail.yourdomain.com。这样做的好处是,邮件的 DNS 记录与主域名分离,不会影响主域名的其他服务(如网站、API 等),也是邮件行业的推荐最佳实践。万一子域名的发送信誉受损,也不会波及你的主品牌域名。

添加域名后,Resend 会提供几条需要你添加到域名服务商的 DNS 记录,主要包括 SPF、DKIM 和 DMARC 记录。无论你使用的是 Cloudflare、Namesilo 还是其他服务商,添加过程都类似。添加完毕后,通常等待几分钟,Resend 就会自动验证并通过。

Resend 域名 DNS 记录配置与验证状态

创建 API Key

接下来,在 Dashboard 中导航至 API KeysCreate API Key

Resend API 密钥创建与代码示例界面

创建时需要注意权限选择:

  • Sending access:如果仅用于发送交易类邮件(如注册验证、付款收据),选择此项即可。
  • Full access:如果后续还需要使用 Audience 功能管理订阅者列表,则需要选择此项。

请注意,API Key 只会在创建时显示一次,务必立即复制并妥善保存。

在 Supabase 中接入自定义 SMTP

这一步是为了彻底解决 Supabase 身份验证邮件(如注册确认、密码重置)的送达率问题。

进入你的 Supabase 项目 Dashboard,导航至 AuthenticationSMTP Settings,开启 Custom SMTP 选项。

Supabase 自定义 SMTP 服务器配置界面

按照以下信息填写:

Host: smtp.resend.com
Port: 465
Username: resend
Password: 你的 Resend API Key(格式为 re_xxxx...)
Sender email: noreply@mail.yourdomain.com
Sender name: 你的产品名称

保存配置后,所有由 Supabase 触发的认证邮件(包括邮箱验证、密码重置、Magic Link 等)都将通过你自己的已验证域名发出,极大提升邮件进入收件箱的概率。

代码集成示例:支付成功后发送欢迎邮件

以下是一个实际应用场景:用户通过 Stripe 完成支付后,通过 Stripe Webhook 触发,向用户发送一封包含收据信息和快速入口链接的欢迎邮件。

首先,安装 Resend 的 Node.js SDK:

npm install resend

然后,初始化 Resend 客户端:

import { Resend } from 'resend'
export const resend = new Resend(process.env.RESEND_API_KEY)

最后,在支付成功的处理逻辑中调用发送邮件:

const { error } = await resend.emails.send({
  from: ‘你的产品名 <noreply@mail.yourdomain.com>’,
  to: userEmail,
  subject: ‘欢迎加入!’,
  html: emailHtml, // 这里是你的邮件 HTML 内容
})

当然,邮件发送是锦上添花的功能,务必确保支付等核心业务流程的稳定与正确。

常见问题与解决方案

  1. 错误 403:域名未验证

    • 问题:我在 Resend 验证的域名是 mail.example.com,但在代码中设置的发件人地址却是 hello@sub.example.com
    • 原因:发件人邮箱 @ 符号后的域名必须与你已在 Resend 中验证的域名完全一致。
    • 解决:确保发件地址格式为 任意前缀@已验证域名noreplyhellosupport 等前缀可以自由设置。
  2. Supabase 默认邮件无法送达 Gmail

    • 原因:如前所述,是共享 SMTP 和域名信誉问题。
    • 解决:按照上述步骤配置 Supabase 的 Custom SMTP 为 Resend 后,问题即可解决。

成本分析

  • Resend Free 计划:完全免费,每月 3,000 封邮件,支持 1 个域名。
  • Resend Pro 计划:20 美元/月,每月 50,000 封邮件,支持多域名。

对于早期产品而言,免费版的 3,000 封额度足以覆盖注册验证、交易通知等需求。待用户量增长后,再升级至付费计划也不迟。

后续扩展可能性

搭建好可靠的邮件基础设施后,很多用户沟通和运营工作就变得水到渠成:

  1. 基础事务邮件:用户注册验证、密码重置等功能已通过 Supabase 集成自动处理。
  2. Newsletter:利用 Resend 内置的 Audience 功能,你可以轻松管理订阅者列表。用户订阅时,通过 API 将其邮箱添加到 Audienc e中;需要发送周刊或公告时,直接向整个列表群发即可,无需再集成 Mailchimp 或 ConvertKit 等第三方服务。这正是在业务层面进行 开源实战 的一种体现,用一套工具解决多个问题。
  3. 自动化生命周期邮件:课程完成后的证书邮件、用户7天未登录的召回邮件、会员到期前的续费提醒邮件等,都可以基于此通道轻松实现。

Resend Audience 功能联系人管理界面

总结与流程梳理

整个搭建流程非常高效:

  • Resend 注册与域名验证:约 10 分钟。
  • Supabase Custom SMTP 配置:约 5 分钟。
  • 代码集成:安装 SDK 并编写少量调用代码,熟练的话只需几分钟。

总计不到一小时,你就可以为自己的出海产品搭建起一个免费、高送达率且易于扩展的邮件发送系统。这套方案不仅解决了当下的邮件送达难题,也为未来的用户增长和运营需求预留了空间。希望这篇在 云栈社区 分享的实战笔记,能帮助更多开发者顺利解决出海过程中的邮件服务挑战。




上一篇:STM32时钟系统解析:深入理解FCLK、HCLK、PCLK与SYSCLK的区别与联系
下一篇:Anthropic工程师揭秘:Claude Code Skills九大类型与九条最佳实践开发指南
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-3-19 08:59 , Processed in 0.608438 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表