已设置应用密码与双因素认证,仍无法用smtplib登录Outlook服务器
Outlook SMTP登录失败(基本认证禁用)解决办法
问题根源
Outlook/Office 365目前默认禁用了SMTP基本认证,哪怕你已经开启双因素认证、生成了应用密码,smtplib自带的login()方法采用基本认证仍会被服务器拒绝,这就是你遇到5.7.139 Authentication unsuccessful错误的核心原因。而Gmail当前仍支持应用密码+基本认证的组合,因此同一份代码在Gmail环境下能正常运行。
解决办法:切换为OAuth2认证
要让Python程序正常连接Outlook SMTP服务器,必须使用OAuth2认证方式,具体步骤如下:
1. 在Azure门户注册应用并获取认证凭据
- 登录Azure门户,进入Azure Active Directory → 应用注册 → 新注册
- 填写应用名称,选择「任何组织目录中的帐户和个人Microsoft帐户」,重定向URI填写
http://localhost,完成注册 - 进入应用的证书和密码页面,创建一个客户端密码,记录下密码值(仅显示一次)
- 进入API权限页面,搜索
Microsoft Graph,选择应用权限,添加Mail.Send权限,随后点击授予管理员同意 - 记录好应用的客户端ID、租户ID和刚才创建的客户端密码,后续代码会用到
2. 使用msal库实现OAuth2认证发送邮件
先安装依赖库:
pip install msal
替换后的完整代码:
import smtplib from msal import ConfidentialClientApplication # 基础配置信息 SMTP_SERVER = 'smtp.office365.com' SMTP_PORT = 587 SENDER_EMAIL = 'myemail@outlook.com' # 替换为你自己的Azure应用凭据 CLIENT_ID = "你的客户端ID" TENANT_ID = "你的租户ID" CLIENT_SECRET = "你的客户端密码" SCOPE = ["https://outlook.office.com/SMTP.Send"] def get_access_token(): app = ConfidentialClientApplication( CLIENT_ID, authority=f"https://login.microsoftonline.com/{TENANT_ID}", client_credential=CLIENT_SECRET ) result = app.acquire_token_for_client(scopes=SCOPE) if "access_token" in result: return result["access_token"] raise Exception(f"获取token失败:{result.get('error_description')}") def send_test_email(): try: token = get_access_token() server = smtplib.SMTP(SMTP_SERVER, SMTP_PORT) server.starttls() # 使用XOAUTH2协议完成认证 server.login(SENDER_EMAIL, token, initial_response_ok=True) # 构造测试邮件内容 msg = """Subject: OAuth2测试邮件 这是通过Python+OAuth2认证发送的Outlook测试邮件。 """ # 替换为实际收件人邮箱 server.sendmail(SENDER_EMAIL, ["recipient@example.com"], msg) print("邮件发送成功!") except Exception as e: print(f"执行出错:{e}") finally: server.quit() if __name__ == "__main__": send_test_email()
3. 不推荐的临时方案:启用SMTP基本认证
如果你不想部署OAuth2,可以尝试临时开启SMTP基本认证,但微软已明确逐步淘汰该方式,未来可能会失效:
- 登录Outlook网页版,进入设置→查看所有Outlook设置→邮件→同步电子邮件
- 找到「POP和IMAP」选项,确保「允许设备和应用使用POP」「允许设备和应用使用IMAP」均已开启
- 同时检查Microsoft 365管理中心的Exchange→邮件流→连接器,确认全局未禁用基本认证
内容的提问来源于stack exchange,提问作者Ayush Raj
相关产品推荐
相关产品推荐

