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

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

在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 相关产品和应用

全部下载

专题列表