Nodemailer

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Nodemailer: 使用 TypeScript 发送电子邮件

Nodemailer 是最流行的用于从 Node.js 和 TypeScript 应用程序发送电子邮件的模块。它允许通过 SMTP 轻松集成电子邮件发送,并支持 HTML 模板、附件、流以及多种传输方式(Gmail、Yandex、SendGrid 等)。由于内置类型,该库与 TypeScript 完全兼容。

为什么需要 Nodemailer?

在现代 Web 开发中,发送电子邮件用于:

  • 注册确认(验证)
  • 密码重置
  • 通知和邮件群发
  • 系统警报

Nodemailer 通过为任何邮件服务提供统一的 API 来简化此过程。

安装

npm install nodemailernpm install -D @types/nodemailer

对于 TypeScript,请务必安装包含类型的包。

主要功能

  • SMTP 传输 — 通过任何 SMTP 服务器发送(Gmail、Mail.ru、Yandex、AWS SES)。
  • HTML 和文本 — 支持纯文本和 HTML 邮件。
  • 附件 — 文件、图片、Buffer、流。
  • 模板化 — 与 handlebars、pug 等集成。
  • 流 — 发送大文件而无需加载到内存。
  • 连接池 — 提高批量发送时的性能。

TypeScript 代码示例

import nodemailer from 'nodemailer';

interface MailOptions { to: string; subject: string; text?: string; html?: string;}

async function sendEmail(options: MailOptions): Promise<void> { // 创建传输对象(以 Gmail 为例) const transporter = nodemailer.createTransport({ service: 'gmail', auth: { user: 'your-email@gmail.com', pass: 'your-app-password' } });

// 邮件设置 const mailData = { from: 'your-email@gmail.com', to: options.to, subject: options.subject, text: options.text || '', html: options.html || undefined };

// 发送 const info = await transporter.sendMail(mailData); console.log('邮件已发送:', info.messageId);}

// 使用sendEmail({ to: 'user@example.com', subject: '来自 TypeScript 的问候!', html: '<h1>欢迎</h1><p>这是一封测试邮件。</p>'});

何时使用 Nodemailer

该库适用于:

  • 任何需要发送电子邮件的 Node.js/TypeScript 项目。
  • 原型和 MVP — 通过 Gmail 快速设置。
  • 生产系统 — 使用事务性服务(SendGrid、Mailgun)。
  • 微服务和 serverless(Lambda、Cloud Functions)。

不建议使用 Nodemailer 进行批量垃圾邮件发送——为此有专门的 ESP(电子邮件服务提供商)。

结论

Nodemailer 是一个成熟、稳定且文档完善的库。借助 TypeScript 类型,您可以在编译阶段获得自动补全和错误检查。这是在 JavaScript/TypeScript 生态系统中发送电子邮件的理想选择。

推荐