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

启用2步验证后Gmail API发件出现SMTP ERROR 454 4.7.0问题

解决SMTP ERROR 454 4.7.0 Too many login attempts问题(自定义域名Gmail+PHPMailer)

核心原因

这个错误是Google触发了登录/请求频率限制,即便使用XOAUTH2或应用密码,短时间内的高频请求、异常重试逻辑都可能触发该限制。

排查与解决步骤

  • 检查脚本重试与并发逻辑

    • 排查PHPMailer脚本是否存在无限制重试机制:比如发送失败后立即循环重试,短时间内大量请求直接触发限制。需添加指数退避重试,示例逻辑:
      $retryCount = 0;
      $maxRetries = 3;
      $delay = 1; // 初始延迟1秒
      do {
          try {
              $mail->send();
              break;
          } catch (Exception $e) {
              $retryCount++;
              if ($retryCount >= $maxRetries) throw $e;
              sleep($delay);
              $delay *= 2; // 每次延迟翻倍
          }
      } while ($retryCount < $maxRetries);
      
    • 确认是否存在多进程/多用户并发发送场景:比如网站批量触发邮件发送,导致瞬间请求量超限。可添加请求队列,控制每秒发送的邮件数量。
  • 核查Google账号与Workspace设置

    • 登录Google账号,进入「安全」页面查看最近登录活动:确认是否有异常登录记录,若有立即撤销所有非信任的应用授权。
    • 应用密码验证:若使用应用密码,确保生成时选择的应用类型为「邮件」,且仅用于当前PHPMailer脚本,未在其他场景复用。
    • 联系Google Workspace管理员:检查组织级别的邮件发送限制,是否有额外的频率管控策略。
  • 优化PHPMailer的XOAUTH2配置

    • 更新PHPMailer至最新稳定版:旧版本可能存在XOAUTH2令牌刷新的bug,导致重复请求触发限制。
    • 缓存访问令牌:不要每次发送邮件都刷新令牌,访问令牌有效期约1小时,缓存有效令牌,仅在过期时使用刷新令牌获取新令牌,避免高频刷新请求。
    • 确认客户端ID、密钥、刷新令牌的正确性:确保未被修改、重置,且权限范围包含https://www.googleapis.com/auth/gmail.send。
  • 等待限制解除与配额核查

    • 若多次触发限制,Google的临时封禁可能超过24小时,需停止邮件发送2-3天,让限制完全解除后再测试。
    • 确认账号发送配额:Google免费Gmail与Workspace账号的发送频率限制不同,Workspace账号配额更高,但短时间发送量突增仍会触发限制,核查是否超出当前账号的发送配额。
  • 替代方案

    • 改用Gmail API发送:PHPMailer支持Gmail API调用,API的请求限制更宽松,且能更好地跟踪请求状态。
    • 切换第三方邮件服务:如SendGrid、Mailgun等,专门的邮件服务可避免Google的限制,同时支持自定义域名配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 21:52:47