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

Python使用smtplib发邮件出现socket.gaierror[Errno11001]如何解决

问题原因

socket.gaierror: [Errno 11001] getaddrinfo failed 是典型的域名解析失败错误,意味着程序无法找到你填写的SMTP服务器对应的网络地址。你的代码存在一处直接触发该报错的硬伤,同时还有几处会导致后续运行报错的配置问题,按以下步骤修复即可。

修复步骤
  • 修正SMTP服务器地址拼写错误:你代码中把SMTP服务地址拼写成了smpt.gmail.com(smtp的p和t字母顺序写反),这个域名本身不存在,自然会解析失败。正确的Gmail SMTP服务器地址是smtp.gmail.com,同时建议显式指定TLS加密对应的端口587,避免默认端口不匹配的问题。
  • 替换登录凭证:当前Gmail已经禁止使用账号原始密码登录第三方SMTP客户端,你需要先进入Gmail账号的安全设置页面,开启账号的两步验证,之后在安全设置里生成16位的应用专用密码,把代码里password字段的值替换成这个应用专用密码,不要用你日常登录Gmail的账号密码。
  • 优化连接写法:推荐使用with上下文管理器管理SMTP连接,不需要手动调用close()方法,程序会在代码块执行结束后自动释放连接,避免异常场景下连接泄漏。
  • 补充标准邮件头:直接发送纯文本内容很容易被邮件服务商判定为垃圾邮件拦截,建议在消息内容前加上主题字段,符合标准邮件格式要求。
修复后可运行的完整代码
import smtplib

my_email = "你的Gmail邮箱地址@gmail.com"
password = "你生成的16位Gmail应用专用密码"
receiver = "收件人邮箱地址@yahoo.com"

with smtplib.SMTP("smtp.gmail.com", port=587) as connection:
    connection.starttls()
    connection.login(user=my_email, password=password)
    connection.sendmail(
        from_addr=my_email,
        to_addrs=receiver,
        msg="Subject:测试邮件\n\nhello"
    )

补充说明:如果修正地址后仍然报解析错误,检查你当前的网络环境是否能正常访问Gmail服务,网络连通性异常也会触发同类域名解析失败问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 11:12:06