集成Outlook SMTP邮件服务遇smtplib.SMTPAuthenticationError认证失败
Outlook SMTP 535认证失败问题解决方案
问题场景:集成Outlook SMTP服务触发自动化邮件时,抛出错误:
smtplib.SMTPAuthenticationError: (535, b'5.7.139 Authentication unsuccessful, the user credentials were incorrect')
已尝试无效操作:
- 启用MFA并使用应用密码
- 重置邮箱SMTP设置
- 禁用MFA后使用原账号密码认证
关键排查与解决步骤
1. 核对SMTP核心配置参数
Outlook SMTP的参数必须严格匹配,不能出错:
- 服务器地址:
smtp.office365.com - 端口:587(必须配合TLS加密)
- 加密方式:连接后先调用
starttls()启用加密
2. 确认账号SMTP权限
部分企业版Outlook账号可能被管理员限制了SMTP功能:
- 联系企业IT,确认账号是否开启POP/IMAP/SMTP服务
- 检查是否有组织级别的邮件发送限制(比如禁止第三方客户端发送)
3. 重新生成应用密码(MFA启用时)
如果用了MFA,应用密码的生成步骤不能错:
- 登录微软账号安全中心,进入「高级安全选项」>「应用密码」
- 生成时选择「其他(自定义名称)」,输入项目相关名称后生成,复制后立刻保存(生成后无法再次查看)
- 确保输入应用密码时没有空格、大小写错误
4. 检查账号状态
- 直接登录Outlook网页版,确认账号能正常登录、收发邮件,没有被锁定或冻结
- 查看账号是否有未完成的安全验证步骤(比如手机号验证)
5. 排查代码常见错误
检查代码里的细节问题:
- 邮箱地址必须完整(比如
xxx@outlook.com或企业域名后缀) - 密码/应用密码没有拼写错误、多余空格
- 确保在调用
login()之前已经启用了TLS,参考示例代码:
import smtplib from email.mime.text import MIMEText sender = "your-account@outlook.com" auth_code = "your-app-password-or-password" receiver = "target@example.com" content = MIMEText("自动化邮件测试内容") content["Subject"] = "测试邮件" content["From"] = sender content["To"] = receiver try: with smtplib.SMTP("smtp.office365.com", 587) as smtp_server: smtp_server.starttls() # 必须先启动TLS加密 smtp_server.login(sender, auth_code) smtp_server.sendmail(sender, receiver, content.as_string()) print("邮件发送成功") except smtplib.SMTPAuthenticationError as err: print(f"认证失败: {err}")
6. 排除网络/防火墙限制
- 检查服务器或本地网络是否封禁了587端口
- 切换网络(比如手机热点)测试,确认不是网络环境导致的连接问题
内容的提问来源于stack exchange,提问作者Sudhansu Sekhar Pati
相关产品推荐
相关产品推荐

