You need to enable JavaScript to run this app. 使用Python smtplib库发送Gmail邮件出现WinError10060超时错误求助
优惠活动
大模型
产品
解决方案
定价
更多

使用Python smtplib库发送Gmail邮件出现WinError10060超时错误求助

smtplib连接Gmail触发WinError 10060超时的解决方案

原始问题代码

import smtplib

connection = smtplib.SMTP("smtp.gmail.com")
connection.starttls()
connection.login(user="mymail@gmail.com", password="mypassowrd")
connection.sendmail(from_addr="mymail@gmail.com", to_addrs="recievermail@gmail.com", msg="Hello")
connection.close()

运行抛出的错误栈

Traceback (most recent call last):
  File "E:\100Days-Python_programs\Day32\Birthday Wisher (Day 32) start\main.py", line 3, in <module>
    connection = smtplib.SMTP("smtp.gmail.com")
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\smtplib.py", line 253, in __init__
    (code, msg) = self.connect(host, port)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\smtplib.py", line 339, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\smtplib.py", line 310, in _get_socket
    return socket.create_connection((host, port), timeout,
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\socket.py", line 843, in create_connection
    raise err
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\socket.py", line 831, in create_connection
    sock.connect(sa)
TimeoutError: [WinError 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond

Process finished with exit code 1

已完成的排查操作

  • 开启Google账号的低安全性应用访问权限
  • 关闭Google账号的所有附加安全验证步骤
  • 关闭本地系统防火墙防护
    以上操作均未解决连接超时问题。

可落地的解决步骤

  • 修正端口参数配置
    smtplib初始化SMTP连接时不指定端口的话,默认使用25端口。该端口在绝大多数家庭、办公网络环境下会被运营商或网关拦截,根本无法连通Gmail服务器。Gmail的TLS加密连接必须显式指定587端口,SSL直连必须指定465端口,不能依赖默认端口参数。
  • 调整代码连接逻辑
    修正后的可参考代码:
    import smtplib
    # 显式指定587端口,延长超时阈值避免快速触发超时
    connection = smtplib.SMTP("smtp.gmail.com", port=587, timeout=30)
    connection.starttls()
    connection.login(user="mymail@gmail.com", password="你的专属应用授权密码")
    connection.sendmail(from_addr="mymail@gmail.com", to_addrs="recievermail@gmail.com", msg="Hello")
    connection.close()
    
  • 匹配账号认证规则
    Google从2022年起已彻底关闭“低安全性应用访问”通道,不再支持使用账号本身的登录密码直接做SMTP认证。无论是否关闭账号附加安全验证,都需要在Google账号后台生成16位的专属应用授权密码,替换代码中的普通登录密码,才能通过认证环节。
  • 校验网络连通性
    如果本地网络无法直连Gmail的境外SMTP服务,哪怕端口和配置全部正确也会触发10060超时。可在系统命令行执行telnet smtp.gmail.com 587校验连通性,如果返回连接失败,说明当前网络出口无法直达目标服务,需要为Python进程配置可用的网络代理后再做调试。

内容的提问来源于stack exchange,提问作者Deep Shah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.04 09:15:06