LogoMkSaaS文档
LogoMkSaaS文档
首页模板介绍代码库视频教程入门文档环境配置
网站配置

功能集成

数据库身份验证邮件邮件订阅存储支付积分定时任务AI 功能统计分析通知验证码聊天框联盟营销

自定义

元数据字体主题图片国际化博客文档组件页面落地页用户管理密钥管理

代码库

IDE 设置项目结构格式化和代码检查更新代码库
X (Twitter)

邮件订阅

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

MkSaaS 支持 Resend 和 Beehiiv 来管理邮件订阅。

设置

创建 Resend 账户

在 resend.com 创建 Resend 账户。

获取 API 密钥

点击 API Keys > Create API Key,设置权限为 Send emails 或 Full access。复制 API Key,并添加到环境变量文件:

.env
RESEND_API_KEY=YOUR-RESEND-API-KEY

更新网站配置

src/config/website.tsx
export const websiteConfig = {
  // ...其他配置
  newsletter: {
    provider: 'resend',
    autoSubscribeAfterSignUp: false,
  },
  // ...其他配置
}

创建 Beehiiv 账户

在 beehiiv.com 创建 Beehiiv 账户。

获取 API 密钥和 Publication ID

进入 Settings > API 生成 API 密钥。从 URL 或设置页面获取您的 Publication ID。将凭据添加到环境变量文件:

.env
BEEHIIV_API_KEY=YOUR-BEEHIIV-API-KEY
BEEHIIV_PUBLICATION_ID=YOUR-BEEHIIV-PUBLICATION-ID

更新网站配置

src/config/website.tsx
export const websiteConfig = {
  // ...其他配置
  newsletter: {
    provider: 'beehiiv',
    autoSubscribeAfterSignUp: false,
  },
  // ...其他配置
}

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

环境配置

设置环境变量


使用方法

import { subscribe, unsubscribe, isSubscribed } from '@/newsletter';

// 为用户订阅邮件列表
const success = await subscribe('user@example.com');

// 为用户取消订阅邮件列表
const success = await unsubscribe('user@example.com');

// 检查用户是否已订阅邮件列表
const subscribed = await isSubscribed('user@example.com');

扩展新的邮件订阅服务

MkSaaS 支持扩展新的邮件订阅服务提供商:

  1. 在 src/newsletter/provider 目录中创建新文件(例如 custom-provider.ts)。
  2. 实现 NewsletterProvider 接口:
src/newsletter/provider/custom-provider.ts
import type {
  CheckSubscribeStatusParams,
  NewsletterProvider,
  SubscribeNewsletterParams,
  UnsubscribeNewsletterParams,
} from '@/newsletter/types';

export class CustomNewsletterProvider implements NewsletterProvider {
  constructor() {
    // 初始化您的邮件订阅服务提供商
  }

  public getProviderName(): string {
    return 'CustomProvider';
  }

  async subscribe({ email }: SubscribeNewsletterParams): Promise<boolean> {
    // 订阅用户的实现
    return true;
  }

  async unsubscribe({ email }: UnsubscribeNewsletterParams): Promise<boolean> {
    // 取消订阅用户的实现
    return true;
  }

  async checkSubscribeStatus({ email }: CheckSubscribeStatusParams): Promise<boolean> {
    // 检查订阅状态的实现
    return true;
  }
}
  1. 在 index.ts 中注册新的提供商:
src/newsletter/index.ts
import { CustomNewsletterProvider } from './provider/custom-provider';

export const initializeNewsletterProvider = (): NewsletterProvider => {
  if (!newsletterProvider) {
    switch (websiteConfig.newsletter.provider) {
      case 'resend':
        newsletterProvider = new ResendNewsletterProvider();
        break;
      case 'beehiiv':
        newsletterProvider = new BeehiivNewsletterProvider();
        break;
      case 'custom':
        newsletterProvider = new CustomNewsletterProvider();
        break;
      default:
        throw new Error(
          `不支持的邮件订阅服务提供商: ${websiteConfig.newsletter.provider}`
        );
    }
  }

  return newsletterProvider;
};

常见问题

应该选择哪个提供商?

  • 选择 Resend:如果您已经使用 Resend 发送事务性邮件,并希望有一个简单统一的解决方案来处理邮件发送和订阅管理。
  • 选择 Beehiiv:如果您需要高级订阅功能,如数据分析、变现、推荐计划和增长工具,适合专业内容创作者。

环境变量RESEND_AUDIENCE_ID

从2025年11月15日起,RESEND_AUDIENCE_ID 环境变量已从模板中移除,邮件订阅功能已不再需要该环境变量。

具体详情参考文档:Migrating from Audiences to Segments

视频教程

下一步

邮件

配置邮件服务

身份验证

配置用户身份验证

统计分析

配置统计分析服务

存储

配置存储服务

邮件

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

存储

学习如何设置和使用云存储进行文件上传和媒体处理

目录

设置
创建 Resend 账户
获取 API 密钥
更新网站配置
创建 Beehiiv 账户
获取 API 密钥和 Publication ID
更新网站配置
使用方法
扩展新的邮件订阅服务
常见问题
应该选择哪个提供商?
环境变量RESEND_AUDIENCE_ID
视频教程
下一步