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
相关产品推荐
相关产品推荐

