什么是Nodemailer以及为什么需要它?
Nodemailer 是在 Node.js 环境中发送电子邮件最流行的模块。它使用 JavaScript 编写,由于内置类型(DefinitelyTyped),可以与 TypeScript 完美配合。该库允许通过 SMTP、Sendmail、Amazon SES 和其他传输方式发送邮件。在 TypeScript 项目中,Nodemailer 为所有选项提供严格的类型检查,从而减少了编译阶段的错误数量。
安装
执行以下命令进行安装:
npm install nodemailer @types/nodemailer@types/nodemailer 包添加了 TypeScript 所需的类型声明。
主要功能
- 通过 SMTP 发送邮件 — 支持 Gmail、Yandex、Mail.ru、SendGrid 以及任何其他 SMTP 服务器。
- 附件 — 可以附加文件、图片、PDF。
- HTML 模板 — 发送格式化 HTML 内容的邮件。
- 支持 SSL/TLS — 安全数据传输。
- 连接池 — 针对批量发送进行优化。
TypeScript 代码示例
以下是一个通过 Gmail SMTP 使用 TypeScript 发送邮件的最小示例:
import nodemailer from 'nodemailer';
interface MailOptions { from: string; to: string; subject: string; text?: string; html?: string;}
async function sendEmail(options: MailOptions): Promise<void> { const transporter = nodemailer.createTransport({ service: 'gmail', auth: { user: 'your@gmail.com', pass: 'your-app-password', }, });
const info = await transporter.sendMail(options); console.log('邮件已发送:', info.messageId);}
// 使用示例sendEmail({ from: 'your@gmail.com', to: 'recipient@example.com', subject: '来自 TypeScript 的问候!', html: '<h1>测试邮件</h1><p>通过 Nodemailer 发送</p>',});重要提示: 对于 Gmail,需要使用应用专用密码(App Password),而不是常规密码。
何时使用 Nodemailer?
该库适用于:
- 注册邮件(确认电子邮件、密码恢复)。
- 在线商店的订单通知。
- 新闻简报和营销邮件(使用队列)。
- 后端自动报告(日志、错误、统计数据)。
如果你需要在一个 TypeScript 项目中发送电子邮件,Nodemailer 凭借其灵活性、可靠性和庞大的社区支持,仍然是事实上的标准。