Node.js+Nodemailer发信控制台显示邮箱正常但报No recipients defined错误
问题根因
你服务端代码中mailOptions配置的to字段使用了单引号包裹模板插值语法,JavaScript 仅支持用反引号()包裹的模板字符串解析${}插值表达式,单引号包裹的内容会被识别为普通字面量字符串。 也就是说你当前代码实际传给to字段的值是字面量${req.body.email},而非用户提交的真实邮箱地址,因此触发No recipients defined`报错。
修复方案
修改mailOptions中to字段的赋值写法,两种写法任选其一即可:
写法1:直接赋值(更简洁,推荐)
let mailOptions = { from: "some@mail.com", to: req.body.email, subject: "Message from: ", text: "Reset password", };
写法2:使用反引号包裹模板字符串
let mailOptions = { from: "some@mail.com", to: `${req.body.email}`, subject: "Message from: ", text: "Reset password", };
额外优化建议
可以在接口入口处增加参数校验,避免无效请求报错:
app.post("/send", function (req, res) { const userEmail = req.body.email; // 校验邮箱参数是否存在且为合法字符串 if (!userEmail || typeof userEmail !== 'string' || !userEmail.includes('@')) { return res.json({ status: "fail", msg: "提交的邮箱地址无效" }); } // 原有后续逻辑... })
内容的提问来源于stack exchange,提问作者Papaja12
相关产品推荐
相关产品推荐

