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

Next.js中Zoho Mail+Nodemailer联系表单535认证失败如何解决?

解决Zoho Mail + Nodemailer的535认证失败问题

针对你遇到的535 Authentication Failed错误,按以下步骤逐一排查修复:

1. 核对Zoho SMTP服务器区域地址

Zoho的SMTP服务器分区域部署:

  • 国际版:smtppro.zoho.com
  • 中国区:smtppro.zoho.com.cn
    确认你的Zoho账户所属区域,替换对应主机地址,区域不匹配会直接导致认证失败。

2. 验证应用密码的有效性

  • 重新生成应用密码:登录Zoho账户,进入「安全」->「应用密码」,选择Mail应用类型生成新密码,直接复制粘贴到.env文件,避免手动输入时的空格、特殊字符错误。
  • 确保.env中密码变量无多余空格,格式应为:SMTP_PASSWORD="你的应用密码"

3. 调整Nodemailer配置细节

针对端口587(非SSL端口),需确保STARTTLS机制正常触发,修改transporter配置:

const transporter = nodemailer.createTransport({
  host: process.env.SMTP_HOST,
  port: Number.parseInt(process.env.SMTP_PORT || "587"),
  secure: process.env.SMTP_PORT === "465", // 587端口下此值为false
  requireTLS: true, // 强制启用STARTTLS
  auth: {
    user: process.env.SMTP_USER,
    pass: process.env.SMTP_PASSWORD,
  },
});

4. 检查Zoho账户的SMTP权限设置

  • 登录Zoho Mail后台,进入「设置」->「邮件账户」->「POP/IMAP/SMTP」,确认SMTP服务已启用。
  • 排查IP限制:进入Zoho「安全」->「IP访问控制」,若开启了IP白名单,需将你的Next.js服务器IP添加至信任列表;临时关闭IP限制可快速验证是否为此问题。

5. 确认.env变量在服务器端正确加载

Next.js的环境变量需在**API路由(服务器端代码)**中读取,客户端组件无法直接访问。可在API路由中添加日志验证变量:

console.log('加载的SMTP_USER:', process.env.SMTP_USER);
console.log('加载的SMTP_PASSWORD:', process.env.SMTP_PASSWORD);

确保变量值与.env中配置完全一致,无拼写错误。

6. 独立测试SMTP连接

用命令行工具(如swaks)直接测试SMTP登录,排除代码问题:

swaks --to test@example.com --from mail@mydomain.com --server smtppro.zoho.com --port 587 --auth-login --user mail@mydomain.com --password "你的应用密码"

若此命令失败,说明问题出在Zoho账户配置而非代码;若成功,再聚焦排查Next.js的变量加载或代码逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 00:34:50