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

Python通过smtplib发送Outlook邮件触发535认证错误排查

Office365 SMTP 535认证错误排查方案

你猜测的非默认SMTP参数、用户名传参异常确实是可能诱因,但企业环境下该报错绝大多数是认证策略限制导致,按优先级排查即可:

  • 先验证基础配置正确性
    微软365公网SMTP标准参数为smtp.office365.com、端口587、强制启用STARTTLS,你当前代码里的这部分配置是正确的。如果企业是Exchange混合部署、本地自建Exchange的场景,确实会使用自定义SMTP地址,直接联系IT索要企业内部SMTP服务器地址即可,这种场景下连公网Office365 SMTP地址必然认证失败。
  • 最高发原因:企业启用了MFA(多因素认证)或安全默认值,拦截了明文密码的SMTP认证请求
    目前绝大多数企业微软365租户默认开启安全默认策略,传统SMTP AUTH协议直接用账号登录密码认证的方式是默认禁用的,哪怕你输入的账号密码和系统登录密码完全一致,也会返回凭证错误。
    对应解决方式:要么联系IT给你的账号单独开启SMTP AUTH权限,要么在账号安全中心生成应用专用密码,用生成的16位应用密码替换代码里的Windows登录密码即可,注意应用专用密码仅在账号开启MFA后支持生成。
  • 第二高发原因:SMTP协议被租户全局/账号级禁用
    很多企业为了防钓鱼、防账号泄露,会全局关闭SMTP、POP3、IMAP这类传统认证协议,这种场景下无论你密码是否正确、是否配置MFA,只要走SMTP登录就会直接返回535错误,该配置是租户管理员权限,个人无法修改,只能联系IT确认你的账号是否放开了SMTP协议访问权限。
  • 传参类问题排查
    你代码里的username字段必须填写完整的邮箱地址,不能只写@前缀的账号名,这部分当前写法是正确的;如果硬编码的密码里包含反斜杠、引号这类特殊字符,注意检查Python字符串转义是否正常,可以在登录前打印username和password变量,确认传递给SMTP服务的值和你预期的完全一致。
  • 特殊场景排查
    如果你的账号是本地AD域同步的联合账号,部分企业的AD FS配置会禁止域账号直接走公网Office365 SMTP认证,必须连接企业内网指定的Exchange SMTP服务器才能发信,不能使用公网的smtp.office365.com地址。

快速验证方法:拿非企业域的个人Outlook邮箱用同一段代码测试,如果个人邮箱可以正常发信,就说明代码逻辑没有任何问题,故障点完全在企业侧的认证策略、权限或服务器配置上,不需要在代码层面排查问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 19:24:22