Nodemailer对接GoDaddy Office365邮箱遇535认证失败求解决方案
解决GoDaddy绑定Office 365邮箱用Nodemailer发邮件535认证失败的思路
给你几个实际可操作的排查方向,你可以一步步来验证:
检查两步验证与应用密码:如果你的Office 365账户开启了两步验证,直接用原密码肯定会认证失败。这种情况下,你需要登录Office 365账户,在安全设置里生成一个应用专用密码,然后把代码里的
pass替换成这个应用密码——这是最常见的踩坑点。修正Nodemailer的SMTP配置:Office 365的SMTP标准配置应该是这样的,你可以替换掉之前的配置试试:
const mailerConfig = { host: 'smtp.office365.com', port: 587, secure: false, // 587端口用STARTTLS,不需要旧参数secureConnection,改用secure即可 auth: { user: 'user@domain.com', pass: '你的密码/应用密码' }, tls: { minVersion: 'TLSv1.2', // Office 365要求至少TLS 1.2,强制这个版本避免兼容性问题 rejectUnauthorized: false // 临时关闭证书验证排查问题,确认正常后建议改回true } };注意:
secureConnection是Nodemailer的旧参数,现在已被secure替代;587端口必须设置secure: false,因为它依赖STARTTLS升级加密连接。确认Office 365租户的SMTP权限:登录Office 365管理员后台,检查你的账户是否被允许使用SMTP客户端访问:
- 进入「Exchange管理员中心」->「收件人」->「邮箱」
- 找到你的账户,在「邮件功能」里确认「POP3和IMAP4」已开启,且SMTP访问未被限制
排查密码与账户状态:
- 确认密码输入无误,包括大小写、特殊字符(如果密码里有
@或\这类字符,在代码里要用双引号包裹或转义) - 登录Outlook网页版测试账户是否能正常登录,排除账户被临时锁定的可能
- 确认密码输入无误,包括大小写、特殊字符(如果密码里有
用工具测试SMTP连接(排除代码问题):先脱离Node.js代码,用telnet手动测试SMTP认证:
- 执行
telnet smtp.office365.com 587 - 输入
EHLO yourdomain.com - 输入
STARTTLS - 输入
AUTH LOGIN - 输入base64编码的用户名(比如用
echo -n user@domain.com | base64生成) - 输入base64编码的密码
如果这步认证失败,说明问题出在账户或Office 365配置,而非Nodemailer代码;如果成功,再回头检查代码的配置细节。
- 执行
内容的提问来源于stack exchange,提问作者grizzo
相关产品推荐
相关产品推荐

