Nodemailer: 在 JavaScript (Node.js) 中发送电子邮件
Nodemailer 是从 Node.js 应用程序发送电子邮件最流行的模块。它提供了简单灵活的 API 用于与 SMTP 服务器交互,并支持 HTML 模板、附件、流传输以及多种传输方式 (SMTP、Sendmail、Amazon SES 等)。
为什么需要 Nodemailer?
在 Web 应用程序中,经常需要发送邮件:注册确认、密码重置、通知、群发邮件。Nodemailer 可以在没有多余依赖的情况下实现这一点,并支持 OAuth2、SSL/TLS 和编码。它异步运行,不会阻塞事件循环。
安装
通过 npm 安装模块:
npm install nodemailer要使用 Gmail 或 Yandex.Mail,可能需要进行额外配置(应用密码或 OAuth2)。
主要功能
- 通过 SMTP、Sendmail、AWS SES、Mailgun、SendGrid 发送
- 支持 HTML 和纯文本邮件
- 附件(文件、图像、Buffer、流)
- OAuth2 身份验证(Gmail、Outlook)
- 用于批量发送的连接池
- 模板化(Handlebars、EJS 集成)
JavaScript (Node.js) 代码示例
通过 Gmail SMTP 发送邮件的简单示例:
const nodemailer = require('nodemailer');
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'your-email@gmail.com',
pass: 'your-app-password'
}
});
const mailOptions = {
from: 'your-email@gmail.com',
to: 'recipient@example.com',
subject: '来自 Node.js 的问候',
html: '<h1>测试邮件</h1><p>通过 Nodemailer 发送</p>'
};
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
console.log('错误:', error);
} else {
console.log('邮件已发送:', info.response);
}
});何时使用
Nodemailer 适用于任何需要发送邮件的 Node.js 项目:从简单的脚本到企业应用程序。它稳定、文档完善,并受到数千名开发者的支持。如果您需要进行批量发送(时事通讯),最好使用专门的 API 服务(SendGrid、Mailchimp),但对于事务性邮件,Nodemailer 是理想选择。