@sadikkhan02/adapter-nodemailer

中文文档
1.0.0发布于 2026/11/02MITTypeScriptESM + CJS零依赖

Nodemailer电子邮件传输适配器的NotifyKit

中文使用文档
文档目录7 节
  1. 安装
  2. 配置
  3. 环境变量
  4. 使用
  5. 错误分类和恢复
  6. 凭据卫生处理
  7. 许可证

@sadikkhan02/adapter-nodemailer

通用电子邮件适配器NotifyKit使用Nodemailer (SMTP, AWS SES, Mailgun, SendGrid, Gmail, Mailtrap)。

这个包将NotifyKit的后台工作者连接到Nodemailer支持的任何SMTP服务器或电子邮件传递提供程序。它符合 EmailProvider 合同并由 @sadikkhan02/test-utils.


安装

npm install @sadikkhan02/notifykit @sadikkhan02/adapter-nodemailer nodemailer

注意: nodemailer 声明为外部对等依赖项,以允许消费应用程序完全控制版本绑定和本机传输扩展。


配置

环境变量

变量要求默认的描述
SMTP_HOST是- - - - - -SMTP服务器主机名(例如: smtp.mailtrap.io, smtp.sendgrid.net)
SMTP_PORT是587SMTP端口(587 STARTTLS, 465 对于SSL, 25 标准)
SMTP_USER是- - - - - -认证用户名/ API用户
SMTP_PASSWORD是- - - - - -认证密码/ API密钥
SMTP_SECURE否false设置为 true 如果通过端口连接 465 (SSL)
SMTP_FROM否SMTP_USER默认发件人电邮地址([email protected])

使用

import { createNotifier } from '@sadikkhan02/notifykit';
import { NodemailerEmailProvider } from '@sadikkhan02/adapter-nodemailer';

const emailProvider = new NodemailerEmailProvider({
  host: process.env.SMTP_HOST || 'smtp.mailtrap.io',
  port: Number(process.env.SMTP_PORT) || 587,
  secure: process.env.SMTP_SECURE === 'true' || Number(process.env.SMTP_PORT) === 465,
  auth: {
    user: process.env.SMTP_USER!,
    pass: process.env.SMTP_PASSWORD!,
  },
  from: process.env.SMTP_FROM || '[email protected]',
});

const notifier = createNotifier({
  providers: {
    email: {
      type: 'nodemailer',
      adapter: emailProvider,
      from: '[email protected]',
    },
  },
});

// Register an email template
notifier.registerTemplate(
  'account-activation',
  '<h1>Activate Your Account</h1><p>Click <a href="{{url}}">here</a> to confirm.</p>',
);

// Enqueue notification (returns immediately with jobId)
const { jobId } = await notifier.notify({
  to: { email: '[email protected]' },
  channels: ['email'],
  template: 'account-activation',
  data: { url: 'https://example.com/activate?token=xyz' },
});

// Start processing email queue
notifier.startWorker({ channels: ['email'] });

错误分类和恢复

每个交付尝试都映射到一个标准化的 ProviderResult:

SMTP错误/响应码类别retryableBullMQ行动
ETIMEDOUT, ECONNRESET, ECONNREFUSED网络故障true以指数回退重试
EAI_AGAIN (DNS临时查找失败)DNS瞬态true以指数回退重试
421 (服务不可用,正在关闭通道)服务器繁忙true以指数回退重试
450, 451, 452 (信箱忙/信箱限制)率/配额true以指数回退重试
535 (身份验证凭据无效)配置缺陷false直接路由到DLQ(不重试)
550, 551, 553 (邮箱不存在)收件人坏false直接路由到DLQ(不重试)
552, 554 (交易失败/被拒绝)违反政策false直接路由到DLQ(不重试)

凭据卫生处理

Nodemailer返回的所有原始错误消息在附加到错误日志或提供者结果(密码、授权承载令牌和连接凭据匹配)之前都经过处理 pass 或者 password 模式被自动编辑。


许可证

麻省理工学院

版本与发布记录

@sadikkhan02/adapter-nodemailer 共发布 2 个版本,首次发布于 2026/11/02;过去 12 个月发布了 2 个版本。

版本发布日期距今
1.0.0latest2026/11/021 天前
0.0.0-stage2026/11/021 天前

关于 @sadikkhan02/adapter-nodemailer 的常见问题

@sadikkhan02/adapter-nodemailer 是什么?

Nodemailer电子邮件传输适配器的NotifyKit

如何安装 @sadikkhan02/adapter-nodemailer?

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

@sadikkhan02/adapter-nodemailer 支持 TypeScript 吗?

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

@sadikkhan02/adapter-nodemailer 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@sadikkhan02/adapter-nodemailer 需要什么版本的 Node.js?

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

@sadikkhan02/adapter-nodemailer 可以商用吗?

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

@sadikkhan02/adapter-nodemailer 还在维护吗?

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