参考手册Workspace 包参考

Email

邮件发送工具,支持 Resend 和 Zeabur Email

本页是 01MVP 模板的 Workspace 包参考。若你正在按功能启用或改造模板,先看 功能指南

@01mvp/email

这是什么

@01mvp/email 是一个邮件发送工具,帮你用代码给用户发邮件。当前支持 ResendZeabur Email,你不需要自己维护邮件服务器。

能做什么

  • 发送验证邮件 -- 用户注册时发验证码或验证链接
  • 发送密码重置邮件 -- 用户忘记密码时发重置链接
  • 发送邀请邮件 -- 团队成员邀请
  • 发送通知邮件 -- 订单确认、活动通知等
  • 反馈邮件 -- 把站内反馈直接发到指定收件箱
  • 批量发送 -- Zeabur Email REST API 支持批量任务

RESEND_API_KEYZEABUR_EMAIL_API_KEY 都是敏感信息,不要提交到 Git。生产环境请放在部署平台的环境变量里。

怎么配置

Zeabur Email

ZEABUR_EMAIL_API_KEY=zs_xxxxxxxxxxxxx
EMAIL_FROM=contact@01mvp.com
CONTACT_EMAIL=contact@01mvp.com

EMAIL_FROM 必须使用已经在 Zeabur Email 里验证过的发件域名。CONTACT_EMAIL 是站内反馈默认投递的邮箱,01MVP 线上默认使用 contact@01mvp.com

代码里可以直接创建 Zeabur provider:

import { createEmailProvider } from "@01mvp/email";

const provider = createEmailProvider("zeabur", {
  apiKey: process.env.ZEABUR_EMAIL_API_KEY!,
  defaultFrom: process.env.EMAIL_FROM,
});

await provider.send({
  to: "contact@01mvp.com",
  subject: "用户反馈",
  text: "反馈内容",
  replyTo: "user@example.com",
  tags: {
    type: "feedback",
    category: "bug",
  },
});

Resend

RESEND_API_KEY=re_xxxxxxxxxxxxx
EMAIL_FROM=noreply@yourdomain.com

如果想让发件人地址显示自己的域名,需要在对应邮件服务后台绑定并验证域名。

Zeabur Email 限制和价格

Zeabur 官方 REST API 文档当前说明:

  • API 基础地址是 https://api.zeabur.com/api/v1/zsend,请求用 Bearer Token 认证。
  • 单封邮件接口是 POST /emailshtmltext 至少需要一个。
  • 单封邮件的 to + cc + bcc 总收件人数最多 50 人。
  • 主题最长 998 个字符,HTML 和文本内容各最大 5 MB。
  • 邮件总大小最大 10 MB,附件最多 10 个,单个附件最大 10 MB。
  • 批量发送接口单次最多 100 封。
  • 4295xx 这类临时错误建议指数退避重试;400 / 403 这类请求或权限错误不要反复重试。

Zeabur 价格页当前展示的 Email 配额是:

方案日配额月配额
Free00
Dev1003,000
Pro不限50,000
Team不限100,000

REST API 文档的限制说明里还写到:新用户默认 100 封/天,完成域名验证后默认提升到 1,000 封/天。实际可用额度以 Zeabur 控制台和价格页展示为准。

大概原理

  1. 你的代码调用 createEmailProvider('zeabur')createEmailProvider('resend'),传入 API Key
  2. 调用 .send() 方法,告诉它发给谁、标题是什么、邮件内容(HTML 格式)
  3. 底层拼装好邮件,通过对应服务的 API 发出去
  4. 返回一个结果告诉你成功还是失败,以及失败原因

整个过程就像调用一个快递接口 -- 你不用管怎么包装怎么运输,只管填收件人和内容就行。

相关链接