Email
邮件系统
基于 Resend 的交易邮件。
概述
Videa 使用 Resend 发送交易邮件。所有邮件逻辑在 lib/email.ts 中。
邮件类型
| 邮件 | 触发条件 | 模板 |
|---|---|---|
| 验证邮件 | 用户注册 | emails/verification-email.tsx |
| 密码重置 | 忘记密码请求 | emails/reset-password-email.tsx |
| 欢迎邮件 | 邮箱验证完成后 | 内联 |
| 购买确认 | 支付 webhook | 内联 |
| 订阅到期提醒 | 到期前数天 | 内联 |
| 积分不足提醒 | 余额低于阈值 | 内联 |
配置
RESEND_API_KEY="re_your_api_key"
RESEND_FROM_EMAIL="Videa <noreply@yourdomain.com>"开发模式
开发环境无验证域名时,Resend 使用 onboarding@resend.dev 作为发件人。
生产环境
生产环境需在 Resend 面板验证域名,并设置 RESEND_FROM_EMAIL 使用已验证的域名。
邮件模板
模板使用 React Email 组件,位于 emails/ 目录:
// emails/verification-email.tsx
import { Html, Body, Text, Link } from '@react-email/components';
export default function VerificationEmail({ url }: { url: string }) {
return (
<Html>
<Body>
<Text>点击下方链接验证邮箱:</Text>
<Link href={url}>验证邮箱</Link>
</Body>
</Html>
);
}错误处理
所有邮件发送都包裹在 try-catch 中。发送失败会记录日志但不会导致应用崩溃。系统返回成功/错误元组而非抛出异常:
const [success, error] = await sendVerificationEmail(email, token);