使用Office365 SMTP发送Outlook邮件时遇SMTP认证错误求助
问题代码
使用Python连接Office365 SMTP服务器的代码如下:
smtp = smtplib.SMTP('smtp.office365.com', 587) smtp.login('********@amkor.co.kr', '********')
报错信息
Traceback (most recent call last):
File "C:\Users\MyName\Documents\mail.py", line 99, in
smtp.login('*******@amkor.co.kr', '********')
File "C:\Users\MyName\AppData\Local\Programs\Python\Python310\lib\smtplib.py", line 750, in login
raise last_exception
File "C:\Users\MyName\AppData\Local\Programs\Python\Python310\lib\smtplib.py", line 739, in login
(code, resp) = self.auth(
File "C:\Users\MyName\AppData\Local\Programs\Python\Python310\lib\smtplib.py", line 662, in auth
raise SMTPAuthenticationError(code, resp)
smtplib.SMTPAuthenticationError: (535, b'5.7.139 Authentication unsuccessful, the federated STS URL does not support HTTPS. [SJ0PR03CA0214.namprd03.prod.outlook.com]')
错误含义
该错误表明你的邮箱所属组织采用联合身份验证(Federated Authentication),但对应的安全令牌服务(STS)URL未启用HTTPS协议,导致Office365 SMTP服务器无法完成身份验证流程,最终认证失败。
解决办法
- 联系企业IT管理员:
此问题属于企业域配置问题,需IT团队检查联合身份验证的STS配置,确保STS服务使用HTTPS协议,同时验证STS URL的有效性和可访问性。 - 尝试应用密码登录:
若账户已开启多重身份验证(MFA),可在微软账户设置中生成应用密码,替换普通密码用于SMTP登录(需确认IT允许此方式)。 - 完善SMTP连接流程:
确保在登录前开启TLS加密,修正后的代码示例:import smtplib smtp = smtplib.SMTP('smtp.office365.com', 587) smtp.starttls() # 必须在login前调用以启用加密 smtp.login('your-email@amkor.co.kr', 'your-password-or-app-password') - 确认SMTP权限:
检查你的邮箱账户是否被允许使用SMTP协议发送邮件,部分企业会限制SMTP权限,需IT团队开启相关权限。
内容的提问来源于stack exchange,提问作者tam tem

