You need to enable JavaScript to run this app. Node.js使用Office 365发邮件报535-5.7.8用户名密码不被接受错误如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Node.js使用Office 365发邮件报535-5.7.8用户名密码不被接受错误如何解决

535-5.7.8 登录验证失败排查及解决方法

排查步骤

  • 验证环境变量读取是否正确:打印process.env.MAIL_USERNAME和process.env.MAIL_PASSWORD,确认加载的账号密码无拼写错误、前后无多余空格,且MAIL_USERNAME是完整的Outlook邮箱地址,不可只填写邮箱前缀。
  • 验证发件人地址一致性:发信参数中from字段使用的settingObj.Contact_Email,必须和process.env.MAIL_USERNAME的值完全一致,Outlook不允许使用登录账号以外的地址发信,会直接触发验证拦截。
  • 验证账号安全配置:Outlook365默认拦截低信任度客户端登录,先确认账号是否开启了多因素认证(MFA),若开启了MFA,普通密码登录会直接被拒绝。
  • 验证TLS配置有效性:当前配置中tls: { ciphers: 'SSLv3' }已经过时,Office365现在要求使用TLS 1.2及以上版本,旧的SSLv3配置会导致握手失败触发验证错误。

解决方案

账号未开启多因素认证

首先修正传输配置的TLS参数,修改后的配置如下:

this._transport = nodemailer.createTransport({
    service: 'Outlook365',
    host: 'smtp.office365.com',
    port: 587,
    secure: false, // 587端口使用STARTTLS,此处固定为false
    auth: {
        user: process.env.MAIL_USERNAME,
        pass: process.env.MAIL_PASSWORD,
    },
    tls: { 
        ciphers: 'TLSv1.2',
        rejectUnauthorized: false // 可选,适配部分证书校验异常的场景
    }
})

之后进入对应邮箱账号的安全设置,开启「允许低安全性应用登录」选项;如果是企业版账号,需要联系管理员在租户后台开启该权限。

账号已开启多因素认证

不能直接用账号原密码登录,需要生成应用专用密码:

  1. 登录Outlook账户,进入安全信息页面
  2. 选择「添加方法」,选中「应用密码」
  3. 将生成的专用密码替换原来的process.env.MAIL_PASSWORD的值即可。

额外注意事项

  • 所有发信请求的from字段必须和登录的邮箱账号完全一致,不要使用别名或其他地址,否则也会触发验证错误。
  • 如果是企业版Office365,需要联系管理员确认SMTP AUTH功能已经为该账号开启,默认部分企业租户会关闭这个功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 01:33:01