Python中smtplib.SMTP_SSL无法正常工作的问题求助
解决Python发送Gmail邮件时的连接超时问题
可能的原因及修复步骤
1. 修正SMTP服务器地址
Gmail的SMTP SSL服务器地址是smtp.gmail.com,而非代码里的smtp.google.com,这是常见拼写错误,修改后代码片段:
with smtplib.SMTP_SSL(host='smtp.gmail.com', port=465, context=context) as server:
2. 替换为应用专用密码
Google目前禁止直接使用账号密码登录第三方邮件客户端,需:
- 开启Google账号的两步验证
- 到账号「安全」页面生成应用专用密码,替换代码中
password字段的空值
3. 排查网络连接
- 执行
ping smtp.gmail.com测试域名解析是否正常 - 用
telnet smtp.gmail.com 465验证465端口是否能访问,若无法连接,大概率是本地防火墙、代理拦截了请求,需调整网络设置
4. 添加超时限制
在SMTP_SSL初始化时加入超时参数,避免无限等待:
with smtplib.SMTP_SSL(host='smtp.gmail.com', port=465, context=context, timeout=10) as server:
5. 尝试STARTTLS连接方式
若SSL连接仍异常,可改用587端口的STARTTLS模式:
context = ssl.create_default_context() with smtplib.SMTP(host='smtp.gmail.com', port=587) as server: server.starttls(context=context) server.login(username, password) server.sendmail(username, receiver, message)
额外优化点
邮件主题与正文间需空一行,避免客户端解析异常:
message = """ Subject: hi how are you? """
内容的提问来源于stack exchange,提问作者Abhijay7
相关产品推荐
相关产品推荐

