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

使用Python通过SMTP发Outlook邮件时偶发TimeoutError[WinError10060]求助

解决Outlook SMTP发送邮件偶尔超时(WinError 10060)的方案

针对你遇到的SMTP连接偶发超时问题,以下是几个实用的解决方向:

1. 给SMTP连接添加超时控制+重试机制

网络波动是这类偶发超时的常见原因,通过设置超时时间并添加重试逻辑,可以大幅降低失败概率。修改后的代码示例:

import smtplib
from email.message import EmailMessage
from email.utils import formataddr
import time

def send_email(subject, receiver_email, name):
    max_retries = 3
    retry_delay = 2  # 重试间隔秒数
    timeout = 15  # 连接超时时间
    
    msg = EmailMessage()
    msg["Subject"] = subject
    msg["From"] = formataddr(("Subject.", sender_email))
    msg["To"] = receiver_email
    msg["BCC"] = sender_email
    msg.set_content(f"""
        some message
    """)
    
    for attempt in range(max_retries):
        try:
            # 初始化SMTP时设置超时
            with smtplib.SMTP(email_server, 587, timeout=timeout) as mailserver:
                mailserver.ehlo()
                mailserver.starttls()
                mailserver.ehlo()
                mailserver.login(sender_email, password_email)
                mailserver.sendmail(sender_email, receiver_email, msg.as_string())
            return  # 发送成功直接返回
        except (smtplib.SMTPException, TimeoutError) as e:
            if attempt == max_retries - 1:
                raise e  # 最后一次重试失败,抛出异常
            time.sleep(retry_delay)
  • 使用with语句自动管理SMTP连接,避免手动quit()可能的资源泄漏
  • 设置timeout参数防止连接无限等待
  • 最多重试3次,每次间隔2秒,适配临时网络波动

2. 确认Outlook SMTP配置正确性

Outlook(Office 365)的官方SMTP配置是固定的,不要随意更换:

  • 服务器:smtp.office365.com
  • 端口:587(必须配合STARTTLS)
  • 如果你的账户开启了两步验证,不能用原密码登录,需要生成并使用「应用密码」

3. 排查网络环境限制

  • 检查本地防火墙/杀毒软件是否拦截了SMTP连接(587端口)
  • 如果是公司网络,确认是否需要通过代理服务器连接SMTP,若需要则在初始化SMTP前添加代理配置:
    import socks
    socks.set_default_proxy(socks.HTTP, "proxy_host", proxy_port)
    socks.wrapmodule(smtplib)
    
  • 联系ISP确认是否对SMTP出站连接有限流

4. 控制邮件发送频率

Outlook对短时间内的邮件发送量有阈值限制,若批量发送邮件,建议每发送1-2封添加10-15秒的延迟,避免触发服务器限流导致连接超时。

内容的提问来源于stack exchange,提问作者Gb Fd

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 23:20:01