1 回答
TA贡献1777条经验 获得超3个赞
我相信你的目标和情况如下。
您想使用 php 的 googleapis 删除消息。
您已经能够获取和输入 Gmail API 的值。
在这种情况下,它使用Gmail API中的“users.messages.delete”方法。
示例脚本:
当你的脚本被修改后,它会变成如下所示。
$service = new Google_Service_Gmail($client);
foreach ($messages as $message){
$msg = $service->users_messages->get($userId, $message->getId());
$headers = $msg->getPayload()->getHeaders();
$subject = array_values(array_filter($headers, function($k){
return $k['name'] == 'Subject';
}));
$subject = $subject[0]->getValue();
$body = base64_decode(var_export($msg->payload->body->data, true)));
$service->users_messages->delete($userId, $message->getId()); // Added
}
“users.messages.delete”方法不返回任何值。请小心这一点。
笔记:
在这种情况下,假设
$service
可用于删除消息。如果出现与范围相关的错误,请添加范围https://mail.google.com/
并再次测试。但当范围改变时,请包含访问令牌和刷新令牌的文件再次授权。这样,新的范围就会反映到访问令牌和刷新令牌。请小心这一点。例如,如果在您当前的脚本中,范围的使用类似于
$client->setScopes(Google_Service_Gmail::GMAIL_READONLY);
,请将其修改为$client->setScopes("https://mail.google.com/");
。并再次授权。
重要的
在这个修改后的脚本中,消息被完全删除。所以我想建议使用示例消息来测试它。请小心这一点。
参考:
方法:users.messages.delete
- 1 回答
- 0 关注
- 82 浏览
添加回答
举报