邮件订阅
学习如何设置和使用 Resend 或 Beehiiv 进行邮件订阅管理
MkSaaS 支持 Resend 和 Beehiiv 来管理邮件订阅。
设置
创建 Resend 账户
在 resend.com 创建 Resend 账户。
获取 API 密钥
点击 API Keys > Create API Key,设置权限为 Send emails 或 Full access。复制 API Key,并添加到环境变量文件:
RESEND_API_KEY=YOUR-RESEND-API-KEY更新网站配置
export const websiteConfig = {
// ...其他配置
newsletter: {
provider: 'resend',
autoSubscribeAfterSignUp: false,
},
// ...其他配置
}创建 Beehiiv 账户
在 beehiiv.com 创建 Beehiiv 账户。
获取 API 密钥和 Publication ID
进入 Settings > API 生成 API 密钥。从 URL 或设置页面获取您的 Publication ID。将凭据添加到环境变量文件:
BEEHIIV_API_KEY=YOUR-BEEHIIV-API-KEY
BEEHIIV_PUBLICATION_ID=YOUR-BEEHIIV-PUBLICATION-ID更新网站配置
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 支持扩展新的邮件订阅服务提供商:
- 在
src/newsletter/provider目录中创建新文件(例如custom-provider.ts)。 - 实现
NewsletterProvider接口:
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;
}
}- 在
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
MkSaaS文档