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

Hapi中使用Nodemailer发信报需域名错误 单独运行代码正常

问题原因

这个501 sender address must contain a domain错误和Nodemailer传输器的auth.user配置无关,错误出在发信请求的发件人地址参数上:
SMTP协议要求发件人地址必须是带域名的完整邮箱格式,smtp2go的身份验证用户名支持不带域名的格式,但发信时的from字段不能直接复用auth的用户名。
你在Hapi外测试正常,移入项目报错,大概率是项目内的发信逻辑误将from字段取值设为了不带域名的some-username,和auth.user混用了。

解决方案

  1. 检查transporter.sendMail()方法的入参,确保from字段为完整带域名的合法邮箱,格式示例:
// 正确的发信调用示例
await transporter.sendMail({
  from: "业务通知 <no-reply@yourdomain.com>", // 必须是带域名的完整邮箱
  to: "收件人邮箱",
  subject: "邮件标题",
  text: "邮件内容"
})
  1. 确认Hapi项目的配置文件中,SMTP身份验证用户名和发件人地址是分开配置的,不要混淆两个字段的取值。
  2. 若仍需排查问题,可在创建传输器时开启调试日志,查看完整SMTP交互信息:
const transporter = nodemailer.createTransport({
  host: "mail.smtp2go.com",
  port: 587,
  auth: {
    user: "some-username", // smtp2go给的不带域名的验证用户名
    pass: "your-smtp2go-password"
  },
  debug: true, // 开启调试日志
  logger: true // 打印SMTP交互信息
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 11:15:04