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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:06:05