Python发送Gmail遇TimeoutError[WinError10060]问题求助
解决Gmail发送邮件超时错误(WinError 10060)
问题根源及修复步骤
1. 修正代码中的拼写错误
你的代码里存在多处拼写错误,这是导致连接失败的核心原因:
- SMTP服务器地址写错:
smtp.gamil.com→smtp.gmail.com - 邮箱域名写错:所有
gamil.com都要改为**gmail.com**(发件人、收件人地址均需修正) - 邮件格式换行问题:原代码中
message的换行使用空行,建议用\n\n明确分隔主题和正文,避免邮件显示异常
修正后的代码:
import smtplib as s # 正确的SMTP服务器地址 ob = s.SMTP("smtp.gmail.com", 587) ob.ehlo() ob.starttls() # 修正后的发件人邮箱 ob.login('pawarpraful950@gmail.com', '你的应用专用密码') subject = "test python" body = "I love python" # 规范邮件格式:主题后用\n\n分隔正文 message = f"Subject: {subject}\n\n{body}" # 修正后的收件人邮箱 listadd = ['pnp950@gmail.com'] ob.sendmail('pawarpraful950@gmail.com', listadd, message) print("邮件发送成功") ob.quit()
2. 配置Gmail安全权限
Gmail默认禁止普通密码直接通过第三方应用登录,需做以下设置:
- 启用两步验证:登录Google账号→【安全】→开启【两步验证】
- 生成应用专用密码:在两步验证下方找到【应用专用密码】,输入自定义名称(如"Python邮件"),生成的密码即为代码中
login方法的第二个参数(无需输入空格)
3. 排查网络问题
如果修正后仍超时,检查以下内容:
- 本地防火墙/杀毒软件是否拦截了587端口的出站连接,暂时关闭测试
- 公司/学校网络可能存在代理或端口限制,切换到个人热点尝试
- 尝试改用SSL连接(端口465)替代TLS(587),代码修改如下:
# 使用SMTP_SSL直接建立加密连接 ob = s.SMTP_SSL("smtp.gmail.com", 465) # 无需调用starttls() ob.login('pawarpraful950@gmail.com', '你的应用专用密码')
内容的提问来源于stack exchange,提问作者user20017494
相关产品推荐
相关产品推荐

