Python smtplib连接Outlook SMTP触发SMTPNotSupportedError报错求助
报错原因
- Hotmail/Outlook 官方要求SMTP发信必须先建立TLS加密连接,才会开放身份认证权限。你当前直接通过25端口建立未加密连接后直接调用登录接口,服务器未开启AUTH认证扩展,因此抛出对应错误。
- 端口25本身是传统未加密SMTP端口,目前主流公共邮件服务商均会在未加密链路下禁用身份认证功能,避免账号密码明文传输泄露。
修复方案
方案1:在现有连接逻辑中补充TLS加密步骤
修改你的代码如下:
import smtplib server = smtplib.SMTP('smtp-mail.outlook.com', 25) server.ehlo() # 发起SMTP握手,声明客户端能力 server.starttls() # 启动TLS加密链路 server.ehlo() # 加密链路下重新握手,获取服务端支持的扩展能力 server.login('joshuackeely@hotmail.com', password) # 后续发信逻辑保持不变
方案2:使用加密SMTP端口(推荐)
如果你的运营商/网络环境封禁了25端口,直接将连接端口替换为Outlook官方SMTP加密端口587即可,逻辑和上面完全一致:
server = smtplib.SMTP('smtp-mail.outlook.com', 587) # 后续ehlo、starttls、login逻辑不变
额外注意事项
- 如果你为你的Hotmail账号开启了两步验证,不能直接使用账号登录密码调用SMTP登录接口,需要到微软账号安全中心生成专用的应用密码,用应用密码替换代码里的password参数即可。
内容的提问来源于stack exchange,提问作者RumAndRedbull
相关产品推荐
相关产品推荐

