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

NextJS 13生产环境发邮件报502错误,开发环境正常求助

解决方案:Netlify部署NextJS 13 App Router后Nodemailer邮件发送502错误

问题背景

使用NextJS 13 App Router构建作品集网站,联系表单通过api/email/route.ts的Nodemailer实现邮件发送,本地环境可正常发送,部署到Netlify并绑定域名后出现502网关错误,此前Pages Router版本的相同功能可正常运行。

排查与解决步骤

1. 修正Gmail认证配置(核心)

  • 若Google账号开启了2FA,必须使用App Password替代普通登录密码,普通密码在生产环境会被Google安全策略拦截。
  • 若未开启2FA,需在Google账号设置中开启“不太安全的应用访问”(不推荐,建议优先开启2FA并使用App Password)。
  • 确认EMAIL_ACCOUNT和EMAIL_PASSWORD在Netlify环境变量中配置正确,变量名与代码完全匹配,配置完成后需触发重新部署使变量生效。

2. 优化Nodemailer传输配置

移除tls.rejectUnauthorized: false(该设置会跳过证书验证,在生产环境易引发安全问题和连接异常),并手动指定SMTP参数替代service: "Gmail",提升跨环境兼容性:

const transporter = nodemailer.createTransport({
  host: "smtp.gmail.com",
  port: 465,
  secure: true, // 启用SSL加密
  auth: {
    user: process.env.EMAIL_ACCOUNT,
    pass: process.env.EMAIL_PASSWORD,
  },
});

3. 延长Netlify函数超时时间

Netlify默认函数超时为10秒,邮件发送操作可能因网络延迟触发超时,进而导致502错误。在项目根目录创建或修改netlify.toml:

[functions]
  timeout = 20 # 延长至20秒,可根据实际情况调整

4. 确保Netlify NextJS插件版本兼容

NextJS 13 App Router要求Netlify的@netlify/plugin-nextjs版本≥4.0.0,检查package.json中的依赖:

{
  "devDependencies": {
    "@netlify/plugin-nextjs": "^4.0.0"
  }
}

若版本过低,执行npm install @netlify/plugin-nextjs@latest更新后重新部署。

5. 通过Netlify日志定位具体错误

502是网关层面的错误,实际函数执行异常需查看Netlify函数日志:

  • 进入Netlify站点后台 → Functions → 找到api/email函数 → 查看Logs
  • 日志会显示具体错误原因(如环境变量未定义、SMTP连接被拒绝等),根据信息针对性修复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 23:35:24