Python配置Gmail SMTP失败,出现[Errno 10060]连接超时错误求助
解决Gmail SMTP连接失败(Errno 10060)的问题
看起来你遇到的是Gmail SMTP服务的连接超时问题,这个错误通常和网络限制、账户安全设置或者代码本身的疏漏有关。我帮你梳理几个常见的解决思路:
一、先排查网络层面的问题
Errno 10060本质是连接超时,说明你的机器没法正常访问smtp.gmail.com的587端口。你可以先做个简单测试:
- 打开命令提示符(Windows)或终端(Mac/Linux),输入
telnet smtp.gmail.com 587 - 如果提示“无法打开连接”,那大概率是:
- 你的防火墙/杀毒软件拦截了出站的587端口请求,去对应的安全软件里添加允许规则
- 你的ISP(网络服务商)屏蔽了587端口,这种情况可以试试换用465端口(SMTP_SSL协议)
- 你处于代理网络下,需要在代码里配置代理参数(比如用
smtplib.SMTP的proxy_host和proxy_port)
二、调整Gmail账户的安全设置
现在Google默认限制普通第三方应用直接登录Gmail SMTP,你需要根据自己的账户情况调整:
- 如果没开启两步验证(2FA):
登录你的Google账户,进入「安全性」页面,找到「不太安全的应用访问」选项,开启这个开关(注意:这个选项可能默认隐藏,需要先搜索启用) - 如果开启了两步验证:
不能直接用邮箱密码登录,需要生成「应用专用密码」:- 进入Google账户的「安全性」页面
- 找到「应用专用密码」(需要先确认你已开启2FA)
- 生成一个专门用于SMTP的密码,用这个密码代替你的普通邮箱密码在代码中登录
三、修正你的Python代码
你的现有代码缺少了关键的TLS加密步骤,587端口是需要先启用STARTTLS才能正常通信的。另外注意Python版本的语法差异:
Python 3 示例代码
import smtplib try: # 分开主机和端口参数,可读性更好 server = smtplib.SMTP("smtp.gmail.com", 587) server.ehlo() # 启用TLS加密,这一步是587端口必需的 server.starttls() server.ehlo() # 再次发送ehlo确认加密连接 # 登录:这里填你的Gmail邮箱和对应的密码/应用专用密码 server.login("your_email@gmail.com", "your_auth_password") print("SMTP连接设置成功!") # 后续可以添加发送邮件的逻辑 server.quit() except Exception as t: print(f"设置失败: {t}")
如果587端口还是不行,试试465端口(SMTP_SSL)
import smtplib from smtplib import SMTP_SSL try: # 465端口直接使用SSL加密连接 server = SMTP_SSL("smtp.gmail.com", 465) server.ehlo() server.login("your_email@gmail.com", "your_auth_password") print("SMTP连接设置成功!") server.quit() except Exception as t: print("设置失败") print(t)
如果你还在使用Python 2
注意把print语句调整为Python 2的语法,比如print '设置失败',同时字符串拼接用"设置失败: " + str(t)。
内容的提问来源于stack exchange,提问作者user2813853
相关产品推荐
相关产品推荐

