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

Google PHP API 如何更新Gmail回复/转发邮件时的签名

解决方案

可以通过Gmail API配置回复、转发场景下的默认签名,你当前代码仅设置了新邮件场景的签名字段,没有配置回复/转发场景对应的签名参数,所以会出现描述的问题。


问题原因

Gmail的SendAs资源中存在两个独立的签名字段,分别对应不同的邮件使用场景:

  • signature:对应新建邮件场景使用的签名,是你当前代码已设置的字段
  • replySignature:对应回复、转发邮件场景使用的签名,你当前代码未对该字段赋值,所以回复转发时不会自动带出签名

修正后的实现代码

只需要在原有代码基础上,给SendAs对象额外设置replySignature属性即可,示例如下:

public function updateSignature(User $user, string $email, string $newSignature): SendAs
{
     // Executes the request with the address of its own user
     $this->client->setSubject($user->getPrimaryEmail());

     $serviceSendAs = new SendAs();
     $serviceSendAs->setDisplayName($user->getFullName());
     // 新建邮件使用的签名
     $serviceSendAs->setSignature($newSignature);
     // 新增:回复、转发邮件使用的签名,和新建签名保持一致即可
     $serviceSendAs->setReplySignature($newSignature);
     // 若该发送身份是用户的默认发信地址,建议同步设置为默认,避免多别名场景不生效
     $serviceSendAs->setIsDefault(true);

     $serviceGmail = new Gmail($this->client);
     return $serviceGmail->users_settings_sendAs->update($user->getPrimaryEmail(), $email, $serviceSendAs);
}

效果验证

调用接口更新完成后,进入Gmail设置-「常规」-「签名」页即可看到,回复/转发的签名下拉框已经自动选中了你设置的签名内容,对应示意截图如下:
相关示意截图


注意事项

  • 确保你的应用OAuth授权已包含https://www.googleapis.com/auth/gmail.settings.basic权限,该权限是修改SendAs签名配置的必要权限
  • 如果用户存在多个发信别名,需要为每个别名单独设置replySignature属性才能在对应场景生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:06:05