nodemailer

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

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

开始课程

Nodemailer 库:在 JavaScript (Node.js) 中发送电子邮件

Nodemailer 是从 Node.js 应用程序发送电子邮件最流行的模块。它提供了一个简单但功能强大的 API,用于处理各种邮件服务(SMTP、Gmail、Outlook、SendGrid、Amazon SES 等)。该库支持 HTML 模板、附件、数据流以及加密(SSL/TLS)。

为什么需要 Nodemailer?

在现代 Web 开发中,发送电子邮件是一项基本功能:注册邮件、密码重置、通知、群发邮件。Nodemailer 解决了以下问题:

  • 与任何 SMTP 服务器的通用协作。
  • 支持 HTML 和文本消息。
  • 附件文件(图片、PDF、压缩包)。
  • 大数据流的传输。
  • 与流行服务(Gmail、Yandex、Mail.ru)集成。

安装

通过 npm 安装模块:

npm install nodemailer

对于 TypeScript 额外安装:

npm install @types/nodemailer

主要功能

  • createTransport() — 创建用于连接邮件服务器的传输对象。
  • sendMail() — 使用设置(发件人、收件人、主题、正文、附件)发送邮件。
  • verify() — 检查与服务器的连接。
  • use() — 连接插件(例如,用于模板化)。

Node.js 代码示例

const nodemailer = require('nodemailer');

// 配置传输对象(以 Gmail 和 App Password 为例)const transporter = nodemailer.createTransport({ service: 'gmail', auth: { user: 'your-email@gmail.com', pass: 'your-app-password' // 不是普通密码,而是应用专用密码 }});

// 发送邮件的函数async function sendEmail() { try { const info = await transporter.sendMail({ from: '"Your Name" <your-email@gmail.com>', to: 'recipient@example.com', subject: '来自 Node.js 的问候!', html: '<h1>测试邮件</h1><p>通过 Nodemailer 发送。</p>' }); console.log('邮件已发送: %s', info.messageId); } catch (error) { console.error('发送错误:', error); }}

sendEmail();

何时使用 Nodemailer?

  • 注册和授权 — 发送电子邮件确认邮件。
  • 通知 — 关于用户操作(订单、评论)的提醒。
  • 群发邮件 — 批量发送(但对于大量邮件,最好使用 SendGrid/Mailgun)。
  • 调试 — 在本地环境中发送邮件(通过 Ethereal 或 Mailtrap)。

重要提示: 对于生产环境,请使用真实的 SMTP 服务器(SendGrid、Amazon SES、Mailgun)或配置您自己的邮件服务器。Gmail 有发送限制(每天 500 封邮件)并且需要应用专用密码。

Nodemailer 是在 Node.js 中发送电子邮件的事实标准。它简单、可靠,并且拥有庞大的社区。

推荐