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

使用PHP IMAP从Gmail账户取邮件遇认证失败问题求助

解决Gmail政策更新导致PHP IMAP认证失败的问题

Gmail已停止支持普通账户密码用于第三方IMAP/SMTP登录,这就是你遇到认证失败错误的核心原因,下面提供两种可行的解决办法:

方法一:应用专用密码(推荐,操作简单)

  • 前提条件:你的Google账户必须开启两步验证
  • 操作步骤:
    1. 登录Google账户,进入安全设置页面
    2. 在「登录Google」板块找到「应用专用密码」选项
    3. 选择应用类型为「邮件」,设备名称可自定义(比如“PHP IMAP”)
    4. 生成后会得到一个16位的专用密码,将其替换代码里的$password变量
    5. 原有IMAP连接代码无需改动,使用新的专用密码即可正常连接

修改后的代码示例:

$hostname = '{imap.gmail.com:993/ssl/novalidate-cert}[Gmail]/All Mail';
// 将$new_app_password替换为生成的应用专用密码
$imap = imap_open($hostname, $username, $new_app_password);
$emails = imap_search($imap, 'ALL');
if($emails) echo count($emails);

方法二:OAuth2认证(适用于无法开启两步验证的场景)

如果无法开启两步验证,需采用OAuth2认证流程,步骤相对繁琐:

  • 登录Google Cloud平台创建项目,启用Gmail API
  • 创建OAuth客户端ID,获取客户端ID与密钥
  • 生成授权码,再换取访问令牌和刷新令牌
  • 修改IMAP连接字符串,用访问令牌替代密码:
$hostname = '{imap.gmail.com:993/ssl/novalidate-cert/authuser='.$username.'/oauth2}[Gmail]/All Mail';
$imap = imap_open($hostname, '', $access_token);

注意:访问令牌有有效期,需用刷新令牌定期更新,避免连接失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 09:52:13