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

Python smtplib发Gmail邮件报错socket.gaierror: [Errno 11001] getaddrinfo失败

错误原因与修复方案

  • 核心报错原因:你代码中填写的SMTP服务器地址stmp.gmail.com存在拼写错误,正确地址为smtp.gmail.com,你遇到的socket.gaierror: [Errno 11001] getaddrinfo failed错误就是因为系统无法解析这个拼写错误的域名导致的。
  • 隐藏代码错误:你定义邮件正文的变量名为Email_body,但在构造msg字符串时使用了未定义的body变量,修正地址后运行到该处也会抛出未定义变量的报错,需要把{body}替换为{Email_body}。
  • 额外权限注意:目前Gmail已禁止直接用账号密码调用SMTP服务,你需要先给Google账号开启两步验证,之后生成应用专用密码,将代码中的登录密码替换为这个应用专用密码才能正常登录。

修正后的完整代码

import smtplib

with smtplib.SMTP('smtp.gmail.com', 587) as smtp:
    smtp.ehlo()
    smtp.starttls()
    smtp.ehlo()

    # 替换为自己的 Gmail 地址和生成的应用专用密码
    smtp.login('example@gmail.com', '你的应用专用密码')

    Email_subject = '2 Factor Authentication Code'
    Email_body = "Hello"

    # 修正变量名引用错误
    msg = f'Subject: {Email_subject}\n\n{Email_body}'

    # 第二个参数替换为实际收件人邮箱
    smtp.sendmail('example@gmail.com', 'example@gmail.com', msg)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:15:01