Nodemailer: 在 JavaScript (Node.js) 中发送电子邮件
Nodemailer 是从 Node.js 应用程序发送电子邮件最流行的模块。它提供了一个简单灵活的 API,用于处理各种邮件服务(SMTP、Gmail、Outlook、SendGrid 等)。该库支持 HTML 模板、附件、流,以及通过 OAuth2 进行安全认证。
为什么需要 Nodemailer?
- 发送事务性邮件(注册确认、密码重置)。
- 发送通知和营销活动。
- 与网站上的反馈表单集成。
- 自动发送报告和日志。
安装
通过 npm 安装模块:
npm install nodemailer主要功能
- 传输 — 配置 SMTP 服务器或使用内置传输(Gmail、Mailgun、SendGrid)。
- 邮件格式化 — 支持 HTML、文本、附件(文件、图像、PDF)。
- 流 — 能够发送大文件而无需加载到内存。
- OAuth2 — 为 Gmail 和其他提供商提供安全认证。
- 连接池 — 批量发送时的性能优化。
JavaScript (Node.js) 代码示例
const nodemailer = require('nodemailer');
// 配置传输(使用 Gmail)
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'your-email@gmail.com',
pass: 'your-password' // 或使用应用密码
}
});
// 邮件参数
const mailOptions = {
from: 'your-email@gmail.com',
to: 'recipient@example.com',
subject: '来自 Nodemailer 的问候!',
html: '<h1>这是一封测试邮件</h1><p>通过 Node.js 发送。</p>',
attachments: [{
filename: 'document.pdf',
path: './files/document.pdf'
}]
};
// 发送
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return console.log('错误:', error);
}
console.log('邮件已发送:', info.response);
});何时使用 Nodemailer?
该库适用于任何需要发送电子邮件的 Node.js 项目:从小型博客到企业系统。Nodemailer 可以轻松与框架(Express、Koa)和云服务集成。如果您需要发送带附件、HTML 排版或通过 OAuth2 的邮件,这是最佳选择。
请注意:在生产环境中,建议使用专业服务(SendGrid、Amazon SES)或 SMTP 中继,以避免被屏蔽。Nodemailer 支持所有主流提供商。