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

使用Python的SMTPLIB时出现Timeout Error,求原因及解决办法

Gmail SMTP Timeout Error 排查与解决(已启用2FA+应用专用密码仍报错)

可能的原因及对应解决方法

1. 网络环境被限制

公司、学校内网或公共WiFi常屏蔽SMTP常用端口(Gmail的587、465端口),或是网络延迟过高导致连接超时。

  • 解决:
    • 切换手机热点测试,先排除网络拦截问题。
    • 确保代码端口与加密方式匹配:Gmail优先用587端口+TLS加密,或465端口+SSL加密,不要混淆。
    • 正确代码示例:
      import smtplib
      from email.mime.text import MIMEText
      
      # 构造邮件内容
      msg = MIMEText('这是测试邮件')
      msg['Subject'] = 'SMTP测试'
      msg['From'] = 'your-account@gmail.com'
      msg['To'] = 'recipient@example.com'
      
      try:
          # 587端口+TLS加密的标准写法
          with smtplib.SMTP('smtp.gmail.com', 587) as server:
              server.starttls()  # 必须先启动TLS加密
              server.login('your-account@gmail.com', '你的16位应用专用密码')
              server.send_message(msg)
          print('邮件发送成功')
      except smtplib.SMTPTimeoutError:
          print('连接超时,请检查网络或端口设置')
      

2. 本地防火墙/杀毒软件拦截

电脑防火墙、杀毒软件可能阻止Python程序发起SMTP连接,直接引发超时。

  • 解决:
    • 临时关闭防火墙或杀毒软件,测试能否发送成功。若有效,给Python解释器或你的脚本添加防火墙允许规则。

3. SMTP配置出错

不少人会写错服务器地址(比如把smtp.gmail.com写成smtp.google.com)、漏加加密步骤,或是复制应用密码时带了多余空格。

  • 解决:
    • 核对服务器地址为smtp.gmail.com,应用密码是16位无空格的字符串。
    • 若用465端口,需改用SMTP_SSL方式:
      with smtplib.SMTP_SSL('smtp.gmail.com', 465) as server:
          server.login('your-account@gmail.com', '应用专用密码')
          server.send_message(msg)
      

4. Gmail账户安全拦截

即便有应用密码,Gmail检测到陌生设备/位置的登录时,可能悄悄拦截连接,表现为超时。

  • 解决:
    • 登录Gmail账户,进入「安全」页面查看「最近的安全活动」,若有可疑登录尝试,手动允许该设备/位置。
    • 确认生成应用密码时,选择的是「邮件」应用类型,不要选错其他类型。

内容的提问来源于stack exchange,提问作者A.R.Z the gamers

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 15:34:59