@beignet/provider-mail-resend

中文文档
0.0.65发布于 2026/11/08MITTypeScriptES Module近 30 天下载 1897

重新发送 Beignet 的邮件提供者 - 使用 Resend 添加邮件端口

中文使用文档
文档目录10 节
  1. 安装
  2. 设置
  3. 在应用程序代码中使用
  4. 附件和内含图像
  5. 逃逸舱门
  6. 开发工具
  7. 失败并重试语义
  8. 当地测试
  9. 部署说明
  10. 许可证

翻译:

运行时间 : Beignet需要Node.js 22.12或更新. Bun是可选的.

[叹息] Beignet是实验性的α软件. 这个 0.0.x 包行为早期 评估,且在框架结算时,API可能在发布之间发生变化.

Beignet 的后端邮件提供者 .

提供者安装了应用程序配置 ctx.ports.mailer 移植和曝光 ctx.ports.resend.client 仅作为Resend特定特性的逃生舱.

createResendMailProvider(...) 返回稳定 ResendMailProvider 类型. ResendMailConfig 描述其已验证的配置; Zod 方案尚存 内部.

安装

bun add @beignet/provider-mail-resend @beignet/core resend

提供者要求 resend ^6.14.0 用于附件元数据支持. 升级旧SDK装置 bun add resend@^6.14.0. Beignet 的节点.js 22.12-或更新运行时间基线也满足Resend v6的要求.

设置

import { createResendMailProvider } from "@beignet/provider-mail-resend";
import { createServer } from "@beignet/core/server";

const server = await createServer({
  ports: basePorts,
  providers: [createResendMailProvider()],
  context: ({ ports }) => ({ ports }),
  routes,
});

所需的环境变量 :

变量说明
RESEND_API_KEY重新发送 API 密钥
RESEND_FROM默认发送者, 例如 . My App <[email protected]>

beignet doctor --strict 检查安装的 Resend 邮件提供者是 登记在册 server/providers.ts 和两个必要的 vars 存在 ,在app env 示例或配置中.

使用 createResendMailProvider(...) 如果您要直接通过配置 而不是读 RESEND_* (原始内容存档于2018-10-21). Env vars. 选项覆盖 env 衍生值 :

import { createResendMailProvider } from "@beignet/provider-mail-resend";

export const providers = [
  createResendMailProvider({
    apiKey: secrets.resendApiKey,
    from: "My App <[email protected]>",
  }),
];

通话 createResendMailProvider() 没有选项 配置 .

在应用程序代码中使用

await ctx.ports.mailer.send({
  to: "[email protected]",
  subject: "Welcome",
  html: "<h1>Hello</h1>",
});

一样 MailerPort 与 SMTP 、 内存假象和其他适配器合作 :

await ctx.ports.mailer.send({
  from: { email: "[email protected]", name: "Support" },
  to: ["[email protected]", "[email protected]"],
  replyTo: "[email protected]",
  subject: "Account updated",
  text: "Your account was updated.",
  html: "<p>Your account was updated.</p>",
});

附件和内含图像

通过标准邮件发送文件 :

await ctx.ports.mailer.send({
  to: "[email protected]",
  subject: "Workspace summary",
  text: "Your summary is attached.",
  attachments: [
    {
      filename: "summary.json",
      content: new TextEncoder().encode(JSON.stringify({ completed: 12 })),
      contentType: "application/json",
    },
  ],
});

每个 MailAttachment 需要非空白 filename 没有控制字符 财务报告和审定财务报表 content: Uint8Array; Node.js Buffers 也能够工作. 可选 contentType 指定一个没有参数的 MIME 类型; 提供者从 省略时的文件名 。 设定 contentId: "logo" 图像附件和 提及它与 <img src="cid:logo"> 在HTML正文中嵌入图像. 每个消息的ID必须独一无二: 1–127个字母,数字,点,下划线, @, (中文(简体) ), +,或 -,从字母或数字开始。 关闭 cid: 前缀从 该附件的身份.

发送前共享邮件复制元数据及字节, 允许为空 文件,并拒绝无效的附件字段 MailDeliveryError 在此之前 打电话给供应商。 它接受字节而不是路径、 URL、 流, 或 基础64字符串。 提供者大小和文件类型的限制适用。 附录名称, 字节和内容ID不包含在邮件仪器中.

使用 createMemoryMailer() 从 @beignet/core/mail 主张 mailer.deliveries[0].message.attachments 在测试。 排队任务和 通知应携带存储密钥或JSON安全源数据; 构造 处理器或信道渲染器中的附件字节.

逃逸舱门

仅在您需要未覆盖的 Resend 特定特性时使用 Resend 客户端 以 MailerPort数字 :

await ctx.ports.resend.client.emails.send({
  from: "[email protected]",
  to: "[email protected]",
  subject: "Invoice",
  html: "<p>Your invoice is ready.</p>",
  tags: [{ name: "category", value: "invoice" }],
});

提供者提供:

  • ctx.ports.mailer,标准贝格网 MailerPort
  • ctx.ports.resend,带有Resend客户端的逃生舱门

开发工具

何时 ctx.ports.devtools 已安装,此提供者记录 mail.send, (中文(简体) ), mail.sent,以及 mail.failed 下的活动 mail 观者. 已完成 失败事件包括 durationMs 他们的细节。 事件保留提供者, 接收者数、可用时的交付ID和持续时间,但绝不包括 地址、主题、消息机构或原始Resend错误.

失败并重试语义

提供者失败且不重试 。 每个 send(...) 打个电话 重新发送SDK呼叫,甚至针对瞬态网络出错或提供方故障. 邮件发送不是一码事:计时发送可能仍未完成 因此,一个盲人供应商重试有可能重复电子邮件.

投递失败 MailDeliveryError 从 @beignet/core/mail 与 提供者名称、收件人数和原始Resend错误被保留为 cause 应用软件的处理。 未将错误复制到提供者 仪器 当应用程序记录原因时, 编辑或限制访问 . 启动配置问题在提供者设置时抛出 .

当邮件需要重试时,请从工作或收发箱支持的收听器中发送 并拥有自己的能力 任务或排出行应选择尝试和 延迟,而且申请应在 发送.

当地测试

使用内存或假 MailerPort 在使用个案测试中。 保留续发沙盒或 特定环境配置中的测试模式证书并避免发送真实 自动测试邮件.

部署说明

设定 RESEND_FROM 给已核实域发送者。 将邮件发送视为一种 外部副作用:从承诺的工作流程状态触发重要邮件, 通常通过通知,工作,或外框后置的收听器.

许可证

麻省理工学院

版本与发布记录

@beignet/provider-mail-resend 共发布 65 个版本,首次发布于 2026/05/27;过去 12 个月发布了 65 个版本。

版本发布日期距今
0.0.65latest2026/11/08今天
0.0.642026/11/034 天前
0.0.632026/11/026 天前
0.0.622026/11/017 天前
0.0.612026/11/017 天前
0.0.602026/11/017 天前

关于 @beignet/provider-mail-resend 的常见问题

@beignet/provider-mail-resend 是什么?

重新发送 Beignet 的邮件提供者 - 使用 Resend 添加邮件端口

如何安装 @beignet/provider-mail-resend?

在项目目录运行 npm install @beignet/provider-mail-resend,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:resend(^6.14.0)、@beignet/core(>=0.0.3 <1.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@beignet/provider-mail-resend 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@beignet/provider-mail-resend 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@beignet/provider-mail-resend 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22.12.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@beignet/provider-mail-resend 可以商用吗?

@beignet/provider-mail-resend 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@beignet/provider-mail-resend 的下载量有多少?

根据 npm 官方下载统计,@beignet/provider-mail-resend 在 2026/10/08 – 2026/11/06 这 30 天内被下载 1,897 次,日均约 63 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@beignet/provider-mail-resend 还在维护吗?

最新版本 0.0.65 发布于 2026/11/08(今天);至今共发布 65 个版本,其中过去 12 个月发布了 65 个;首次发布于 2026/05/27。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。