用于发送电子邮件的 TypeScript 版 Nodemailer 库
nodemailer 是一个基于 TypeScript 编写、功能强大且流行的 Node.js 库,可让您轻松从服务器端应用程序发送电子邮件。它支持所有现代协议(SMTP、SES、Sendmail)和邮件格式(HTML、纯文本、附件)。
为什么需要 nodemailer?
在 Web 开发中,经常需要发送通知、注册确认、密码重置或营销邮件。nodemailer 通过提供简单灵活的 API 来与邮件服务器交互,解决了这一问题。得益于 TypeScript 的类型定义,代码变得更加可靠和可预测。
安装
通过 npm 或 yarn 安装该包:
npm install nodemailernpm install -D @types/nodemailer对于 TypeScript,请务必安装类型包。
主要功能
- 支持 SMTP — 可与任何 SMTP 服务器(Gmail、Yandex、Mailgun、SendGrid)配合使用。
- HTML 和纯文本邮件 — 既可发送纯文本,也可发送带格式的 HTML 消息。
- 附件 — 支持文件、图片和内联附件。
- 流式传输 — 可通过流式传输发送大文件。
- 安全性 — 支持 TLS/SSL、OAuth2。
- 连接池 — 针对批量发送进行优化。
TypeScript 代码示例
通过 Gmail SMTP 发送邮件的简单示例:
import nodemailer from 'nodemailer';
async function sendEmail() { const transporter = nodemailer.createTransport({ host: 'smtp.gmail.com', port: 587, secure: false, // 端口 465 时设为 true auth: { user: 'your-email@gmail.com', pass: 'your-password', }, });
const info = await transporter.sendMail({ from: '"Sender Name" <your-email@gmail.com>', to: 'recipient@example.com', subject: '来自 TypeScript 的问候!', text: '这是邮件正文。', html: '<b>这是一封 HTML 邮件</b>', });
console.log('邮件已发送:', info.messageId);}
sendEmail().catch(console.error);何时使用 nodemailer
该库非常适合用于:
- 基于 Node.js/Express/NestJS 的后端应用程序。
- 自动通知(注册、订单、错误)。
- 电子邮件地址验证。
- 发送事务性邮件。
- 与任何 SMTP 提供商集成。
如果您需要发送包含附件、HTML 模板或通过外部服务(SendGrid、Mailgun)的邮件,nodemailer 是 Node.js 生态系统中的事实标准。
重要提示: 在生产环境中,请使用环境变量来存储密码和配置 OAuth2,以免在代码中泄露凭证。