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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:06:03