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

Python登录Gmail报Invalid credentials错误 低安全应用访问已停用

问题根因

你遇到的[AUTHENTICATIONFAILED] Invalid credentials报错,核心触发原因是谷歌已全面停用Gmail的低安全应用访问权限,所有直接使用账号明文密码通过IMAP/POP/SMTP协议登录的请求,都会被谷歌服务端直接拦截,和代码逻辑错误、普通密码输入错误没有直接关系。

可行解决方案

以下方案按改造成本从低到高排序,可根据自己的账号权限情况选择:

  • 方案1:使用应用专用密码(零代码改造,优先推荐)
    这个方案不需要修改现有IMAP登录逻辑,只需要替换登录用的密码即可:

    1. 先登录对应谷歌账号,在安全设置中开启两步验证(2FA),未开启两步验证的账号无法生成应用专用密码
    2. 两步验证开启后,在安全设置页找到「应用专用密码」配置项,应用类型选择「邮件」,设备可自定义填写(比如你部署在AWS Lambda就填对应名称即可),系统会生成一组16位长度的专用密码
    3. 把代码中原先填写的账号普通登录密码,替换为这组16位应用专用密码,原有imap4Obj.login()的调用逻辑完全不用改动,即可正常通过认证

    注意:如果使用的是谷歌Workspace企业账号,需要先由组织管理员在后台放开应用专用密码的使用权限,否则个人账号设置页不会显示对应入口。

  • 方案2:切换为OAuth2.0认证(官方长期推荐的标准方案)
    如果你的账号无法开启两步验证、或者管理员不允许使用应用专用密码,就需要将明文密码登录改造为OAuth2.0授权模式:

    1. 在谷歌云控制台创建对应项目,开启Gmail API服务,创建OAuth2.0授权凭据,拿到客户端ID、客户端密钥
    2. 走OAuth授权流程,拿到对应Gmail账号的长期刷新令牌(refresh_token)
    3. 代码中不再直接传入账号密码,而是每次登录前通过刷新令牌换取有效的访问令牌(access_token),通过IMAP的XOAUTH2协议完成认证
      核心认证代码参考:
    import imaplib
    from google.oauth2.credentials import Credentials
    from google.auth.transport.requests import Request
    
    # 替换为你自己申请到的凭据信息
    EMAIL_ADDR = "你的Gmail邮箱地址"
    creds = Credentials(
        token=None,
        refresh_token="你拿到的refresh_token",
        token_uri="https://oauth2.googleapis.com/token",
        client_id="你的OAuth客户端ID",
        client_secret="你的OAuth客户端密钥",
        scopes=["https://mail.google.com/"]
    )
    # 刷新获取有效的access_token
    creds.refresh(Request())
    # 拼接XOAUTH2协议要求的认证字符串
    auth_content = f"user={EMAIL_ADDR}\x01auth=Bearer {creds.token}\x01\x01"
    # 建立IMAP SSL连接
    imap_conn = imaplib.IMAP4_SSL("imap.gmail.com")
    # 通过XOAUTH2机制完成认证,无需传入普通密码
    imap_conn.authenticate("XOAUTH2", lambda _: auth_content.encode("utf-8"))
    
  • 配套排查校验项
    完成上述配置后如果仍然报错,优先检查以下配置:

    • 确认Gmail设置中已经手动开启了IMAP访问权限,Gmail默认关闭IMAP服务,需要在「转发和POP/IMAP」设置页手动打开
    • 确认填写的应用专用密码、OAuth凭据信息没有输入错误,不要多复制前后的空格
    • 如果是在云服务器、Serverless平台(比如报错中提到的AWS Lambda)上部署,首次从新的出口IP发起登录请求可能触发谷歌安全风控,需要登录账号在安全通知中手动确认是本人操作,解除IP拦截。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 05:09:34