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

使用smtplib发送Gmail邮件时遇TimeoutError[WinError10060]求助

解决Gmail SMTP连接超时(WinError 10060)问题

针对你遇到的连接超时错误,从网络环境、Gmail设置、代码实现三个方向排查,以下是具体解决方案:

1. 排查本地网络限制

  • 临时关闭防火墙、杀毒软件,确认是否是这类软件拦截了Python的网络请求
  • 如果使用代理或VPN,先断开后重试连接
  • 用命令行测试网络连通性:执行telnet smtp.gmail.com 465,若无法连接则说明网络层面存在阻塞

2. 验证Gmail安全设置

  • 确保账号已开启两步验证:应用专用密码仅在两步验证开启时有效,未开启的话无法正常使用
  • 重新生成应用专用密码:登录Gmail网页版,进入「安全」设置,选择「邮件」类应用生成新密码,替换代码中的password字段
  • 检查账号安全状态:登录Gmail网页版,查看是否有异常登录提醒,按提示完成身份验证解除限制

3. 调整SMTP连接方式

原代码使用SMTP_SSL(465端口),可尝试切换为STARTTLS加密方式(587端口),同时修正收件人格式问题:

import smtplib 
from email.mime.text import MIMEText

password = "你的新应用专用密码"
subject = "Email Subject"
body = "This is the body of the text message"
sender = "myemail@gmail.com"
recipients = [sender]  # 改为列表格式,避免字符串拆分错误

def send_email(subject, body, sender, recipients, password):
    msg = MIMEText(body)
    msg["subject"] = subject
    msg["From"] = sender
    msg["To"] = ",".join(recipients)

    with smtplib.SMTP("smtp.gmail.com", 587) as smtp_server:
        smtp_server.starttls()  # 启用TLS加密
        smtp_server.login(sender, password)
        smtp_server.sendmail(sender, recipients, msg.as_string())
    print("Message Sent!")

send_email(subject, body, sender, recipients, password)

4. 检查DNS解析

若上述方法无效,可尝试修改本地DNS为公共DNS(如8.8.8.8或1.1.1.1),解决DNS解析错误导致的连接失败问题

内容的提问来源于stack exchange,提问作者Tom Osborne

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 19:08:15