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

使用Google API服务账号SMTP OAuth2认证报555 5.5.2语法错误

解决服务账号SMTP OAuth2认证的555 5.5.2 Syntax error问题

问题背景

使用Google API PHP Client的服务账号(双腿OAuth2)通过smtp.gmail.com发送邮件时,触发555 5.5.2 Syntax error错误,但authorization_code授权流程可正常工作。已排除邮箱格式、通用gmail域名等常见问题,且完成服务账号的全域委派配置。

核心问题原因

服务账号生成access token时未指定要模拟的Workspace用户主体,导致token仅代表服务账号自身,而非目标发件人邮箱对应的用户身份,SMTP网关无法识别该token的合法性,从而抛出语法错误(实际为身份验证逻辑错误的包装提示)。

修复代码

在服务账号的Client初始化流程中,添加setSubject方法指定要模拟的发件人邮箱:

$this->provider = new Client();
$this->provider->setScopes([Gmail::MAIL_GOOGLE_COM]); 
$this->provider->setAuthConfig('gmail-xoauth2-credentials.json');
$this->provider->useApplicationDefaultCredentials();
$this->provider->setApplicationName(self::GOOGLEAPI_APPLICATION_NAME);
$this->provider->addScope(['https://mail.google.com']);  
// 关键新增:指定模拟的Workspace用户(即SMTP发件人邮箱$SMTPEnvelopeFromAddress)
$this->provider->setSubject($SMTPEnvelopeFromAddress);

随后正常获取token即可:

$tokenArray = $this->provider->fetchAccessTokenWithAssertion();
$accessToken = $tokenArray['access_token'];

验证要点

修改后生成的服务账号access token不再是固定1024字符的“胖token”,解码后的内容会关联到指定的用户身份,可正常通过SMTP网关的OAuth2认证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 14:23:12