You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Node.js+Express框架中使用Nodemailer时出现错误求助

解决Express中Nodemailer依赖已添加但仍报错的问题

嘿,我来帮你排查下这个Nodemailer的问题~你说已经在package.json里加了依赖但控制台还是报错,结合你贴的代码片段,大概率是这几个环节出了问题,咱们一步步来解决:

1. 先确认Nodemailer依赖是否真的安装成功

别光看package.json里的依赖列表,得确保依赖真的被安装到项目里了:

  • 打开项目根目录下的node_modules文件夹,找找有没有nodemailer文件夹;
  • 如果没有,赶紧在终端执行npm install nodemailer,重新安装依赖——有时候手动修改package.json后,可能忘了执行安装命令,或者之前的安装过程因为网络问题失败了。

2. 检查Nodemailer的核心配置是否完整

你贴的代码只引入了Nodemailer,但没有写关键的发送配置,这肯定没法正常工作。给你一个完整的示例配置,你可以参考调整:

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var nodemailer = require('nodemailer');

// 先处理bodyParser的正确配置(你之前的代码里bodyParser.json(...)没写完,这也是语法错误)
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json()); // 这里要补全,不能只写一半

// 创建Nodemailer的transporter(以QQ邮箱为例,不同邮箱配置不同)
let transporter = nodemailer.createTransport({
  host: 'smtp.qq.com', // 邮箱的SMTP服务器地址
  port: 465, // SSL端口,一般是465
  secure: true, // 开启SSL
  auth: {
    user: 'your-qq-email@qq.com', // 你的QQ邮箱地址
    pass: 'your-authorization-code' // 不是QQ密码,是开启POP3/SMTP后获取的授权码
  }
});

// 测试发送邮件的路由
app.get('/send-email', function(req, res) {
  let mailOptions = {
    from: '你的昵称 <your-qq-email@qq.com>',
    to: 'recipient@example.com', // 收件人邮箱
    subject: '测试邮件',
    text: '这是通过Express+Nodemailer发送的测试内容'
  };

  transporter.sendMail(mailOptions, function(error, info){
    if (error) {
      console.log('发送失败:', error); // 这里会打印具体错误,方便排查
      res.send('邮件发送失败');
    } else {
      console.log('发送成功:', info.response);
      res.send('邮件发送成功');
    }
  });
});

app.listen(3000, function() {
  console.log('服务器启动在3000端口');
});

3. 排查代码中的语法错误

你贴的代码里bodyParser.json(...明显没写完,这会导致整个Express服务启动失败,连带Nodemailer的引入也会报错。一定要确保所有代码的语法都是完整的,比如app.use(bodyParser.json())才是正确写法。

4. 根据具体错误信息精准排查

如果上面的步骤都做了还是报错,把控制台的具体错误信息贴出来:

  • 如果是Cannot find module 'nodemailer':还是依赖安装的问题,删除node_modules和package-lock.json后重新执行npm install;
  • 如果是Authentication failed:邮箱的授权码/密码不对,或者没开启POP3/SMTP服务;
  • 如果是Invalid login:检查邮箱地址是否正确,或者SMTP服务器配置是否匹配。

内容的提问来源于stack exchange,提问作者Xay Programming

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:28:07