配置Mailgun用于NextAuth时遭遇535认证失败问题求助
解决NextAuth + Mailgun 535认证失败问题
1. 修正环境变量键名错误
你的环境变量里写的是MAIL_SERVER_HOST,但代码中读取的是EMAIL_SERVER_HOST,这会导致SMTP主机值为空,直接触发认证失败。统一环境变量键名如下:
EMAIL_SERVER_HOST="smtp.mailgun.org" EMAIL_SERVER_PORT="587" EMAIL_SERVER_USER="postmaster@mydomain" EMAIL_SERVER_PASSWORD="key-**********" EMAIL_FROM="你的发件邮箱@mydomain"
注意补充EMAIL_FROM配置,否则邮件发送会缺失发件人地址。
2. 验证Mailgun认证信息准确性
- SMTP用户名:必须是你在Mailgun绑定的域名对应的
postmaster@<你的Mailgun域名>,比如绑定的是mg.yourdomain.com,用户名就是postmaster@mg.yourdomain.com,确认域名部分无拼写错误。 - SMTP密码:不是Mailgun账号密码,是该域名对应的SMTP密钥,在Mailgun控制台的域名设置中获取,格式为
key-xxxxxxxxxxxxxx,确保复制时无遗漏或多余字符。
3. 检查端口与加密配置
端口587是合法的,但NextAuth的EmailProvider默认使用STARTTLS加密,若服务器网络拦截587端口流量,可尝试切换到465端口(SSL加密),需明确添加secure: true配置:
EmailProvider({ server: { host: process.env.EMAIL_SERVER_HOST, port: 465, secure: true, auth: { user: process.env.EMAIL_SERVER_USER, pass: process.env.EMAIL_SERVER_PASSWORD, }, }, // 其他配置项... }),
4. 确认Mailgun域名已完成验证
登录Mailgun控制台,检查你的域名是否完成DNS验证(包括MX、TXT记录配置),未验证的域名会被限制发送邮件,也可能导致认证失败。
5. 重启应用生效配置
修改环境变量后,必须重启Next.js应用,确保新配置加载。若使用Vercel等平台部署,需重新触发部署,避免环境变量缓存问题。
内容的提问来源于stack exchange,提问作者Ben Jonson
相关产品推荐
相关产品推荐

