LogoTanStarter 文档
LogoTanStarter 文档
首页模板介绍代码库快速开始环境配置
网站配置
部署

功能集成

Cloudflare数据库身份验证邮件邮件订阅存储支付通知分析聊天框联盟营销

功能定制

元数据页面落地页博客组件用户管理密钥管理

代码库

项目结构代码检查编辑器设置更新代码库
X (Twitter)

邮件

学习如何使用 Resend 和 React Email 模板设置和使用邮件功能

TanStarter 使用 Resend 进行邮件发送,使用 React Email 构建邮件模板。

设置

创建 Resend 账户

在 resend.com 创建 Resend 账户。

获取 API 密钥

在 Resend 控制台中点击 API Keys > Create API Key,设置权限为 Send emails 或 Full access。获取 API 密钥,并添加到环境变量文件:

.env
RESEND_API_KEY=your-resend-api-key

更新网站配置

更新 website.ts 文件以使用 Resend 作为邮件提供商,并设置默认发送者邮箱地址:

请注意 fromEmail 是发送邮件的邮箱地址,supportEmail 是接收邮件的邮箱地址,邮箱地址后缀是您的邮箱域名。

src/config/website.ts
export const websiteConfig = {
  // ...其他配置
  mail: {
    enable: true, // 是否启用邮件功能
    provider: 'resend', // 要使用的邮件提供商
    fromEmail: 'TanStarter <support@example.com>', // 发送邮件的邮箱地址
    supportEmail: 'TanStarter <support@example.com>', // 接收邮件的邮箱地址
  },
  // ...其他配置
}

如果您正在设置环境,现在可以回到环境配置文档并继续。本文档的其余部分可以稍后阅读。

环境配置

设置环境变量


自定义

创建新的邮件模板

  1. 在 src/mail/templates 目录中创建邮件模板:
src/mail/templates/my-custom-email.tsx
import { EmailLayout } from '../components/email-layout';
import { EmailButton } from '../components/email-button';

interface MyCustomEmailProps {
  username: string;
  actionUrl: string;
}

export function MyCustomEmail({
  username,
  actionUrl,
}: MyCustomEmailProps) {
  return (
    <EmailLayout>
      <p>您好 {username}!</p>
      <p>感谢您加入我们的平台。点击下面的按钮开始使用。</p>
      <EmailButton href={actionUrl}>开始使用</EmailButton>
    </EmailLayout>
  );
}
  1. 在 types.ts 中更新 EmailTemplates 接口以包含您的新邮件模板。

  2. 本地预览您的模板:

pnpm email:dev
  1. 在您的代码中使用模板:
await sendEmail({
  to: 'user@example.com',
  template: 'myCustomEmail',
  context: {
    username: 'John',
    actionUrl: 'https://example.com/start',
  },
});

创建新的邮件提供商

TanStarter 支持扩展新的邮件提供商:

  1. 在 src/mail/provider 目录中创建新文件(例如 sendgrid.ts)
  2. 实现 MailProvider 接口,该接口定义在 src/mail/types.ts 中,需要实现以下方法:
src/mail/provider/sendgrid.ts
import type {
  MailProvider,
  SendEmailResult,
  SendRawEmailParams,
  SendTemplateParams,
} from '../types';

export class SendGridProvider implements MailProvider {
  getProviderName(): string {
    return 'sendgrid';
  }

  async sendTemplate(params: SendTemplateParams): Promise<SendEmailResult> {
    // 使用模板发送邮件的逻辑
  }

  async sendRawEmail(params: SendRawEmailParams): Promise<SendEmailResult> {
    // 发送原始 HTML 邮件的逻辑
  }
}
  1. 在 src/mail/index.ts 中的 providerRegistry 注册新的邮件提供商:
src/mail/index.ts
import { SendGridProvider } from './provider/sendgrid';

const providerRegistry: Record<MailProviderName, ProviderFactory> = {
  resend: () => new ResendProvider(),
  sendgrid: () => new SendGridProvider(),
};

下一步

现在您了解了如何在 TanStarter 中使用邮件,您可能想要探索这些相关功能:

数据库

配置数据库

身份验证

配置身份验证

邮件订阅

配置邮件列表的订阅

环境配置

配置环境变量

身份验证

学习如何在 TanStarter 中使用 Better Auth 设置和使用身份验证

邮件订阅

学习如何设置和使用 Resend 进行邮件订阅管理

目录

设置
创建 Resend 账户
获取 API 密钥
更新网站配置
自定义
创建新的邮件模板
创建新的邮件提供商
下一步