Node.js使用Nodemailer发送邮件实战

阿橙
阿橙
发布时间:2026-10-14| 4人浏览过
原创

在Node.js开发中,处理用户注册验证、通知推送或数据报告时,经常需要集成邮件发送功能。本文将介绍如何使用 npm 包 nodemailer 配置 SMTP 服务,并提供完整的代码示例以及解决常见认证错误的实用指南。

目标:通过Node.js服务端发送邮件

我们的目标是利用 Node.js 环境,通过标准 SMTP 协议连接邮件服务器(如 QQ 邮箱),发送包含 HTML 内容的邮件,并确保连接安全关闭。

准备条件

  1. Node.js 环境:确保已安装 Node.js 和 npm。
  2. 邮件账号:拥有一个支持 SMTP 的邮箱账号(以下以 QQ 邮箱为例)。
  3. 授权码:需在邮箱设置中开启 POP3/SMTP 服务,获取专用的授权码而非登录密码。

真实操作顺序

第1步:安装 Nodemailer 依赖

在项目根目录下运行以下命令安装最新版的 nodemailer 库:

npm install nodemailer --save

第2步:配置 SMTP 传输对象

引入模块并创建 SMTP 连接配置。注意:旧版文档可能推荐使用 "SMTP" 字符串作为传输类型,但新版 Nodemailer (v6+) 推荐使用 `nodemailer.createTransport({host: ...})` 的对象形式。为了兼容性和通用性,以下展示标准的现代配置方式,若使用极旧版本需对应调整:

const nodemailer = require('nodemailer');

// 创建 transporter 对象
let transporter = nodemailer.createTransport({
  host: 'smtp.qq.com', // SMTP 主机地址
  port: 465,           // SSL 端口通常为 465,非SSL为 25 或 587
  secure: true,        // SSL 加密,True 表示使用 SSL
  auth: {
    user: 'your_email@qq.com', // 你的发件邮箱账号
    pass: 'your_authorization_code' // 邮箱授权码,非登录密码
  }
});

第3步:设置邮件内容与发送

定义邮件选项对象,包括发件人、收件人、主题和正文,并调用 sendMail 方法执行发送:

// 设置邮件内容
let mailOptions = {
  from: '"Fred Foo" <your_email@qq.com>', // 发件人显示名和地址
  to: 'recipient@example.com',             // 收件人列表,可逗号分隔多个
  subject: 'Hello world',                  // 邮件标题
  html: '<b>谢谢访问!</b> 这是一封由 Node.js 发送的测试邮件。' // HTML 格式正文
};

// 发送邮件
transporter.sendMail(mailOptions, (error, info) => {
  if (error) {
    console.log('发送失败:', error);
  } else {
    console.log('消息已发送:', info.messageId);
  }
  // 结束会话
  transporter.close();
});

完成判断

当控制台输出“消息已发送”且收件箱收到邮件时,表示配置成功。如果报错,请检查下方的常见问题排查。

原文有依据的排错

错误1:Authentication failed

现象: 抛出 AuthError: Invalid login - 454 Authentication failed...

原因: 账号未开启 SMTP 服务,或者使用的密码是邮箱登录密码而非授权码。

解决方案: 登录 QQ 邮箱网页版,进入 设置 → 帐户,找到“POP3/SMTP服务”,点击开启并生成授权码,将代码中的 pass 字段替换为该授权码。

错误2:Sender address mismatch

现象: 抛出 SenderError: Mail from command failed - 501 mail from address must be same as authorization user

原因: mailOptions.from 中指定的邮箱地址与认证时使用的 auth.user 不一致。

解决方案: 确保 from 字段中的邮箱地址与 auth.user 完全相同。如果需要显示不同的发件人名,请使用 "显示名称 <实际邮箱>" 的格式,如示例代码所示。

简要总结

使用 Nodemailer 发送电子邮件的核心在于正确配置 SMTP 主机、端口以及最关键的授权凭证。务必区分登录密码与 SMTP 授权码,并保持发件人地址与认证账号一致,即可稳定地实现 Node.js 服务端邮件功能。

以上就是Node.js使用Nodemailer发送邮件实例的详细内容,更多关于Node.js SMTP邮件集成的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。