PHP Gmail Api - 删除邮件

PHP Gmail Api - Delete Mail

gmail邮件阅读后如何删除?尝试到处寻找,但找不到适合我的解决方案。目前下面的代码读取主题和正文,我想在阅读后立即删除该特定邮件

$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)));
}

我相信你的目标和情况如下。

  • 您想使用 googleapis 为 php 删除邮件。
  • 您已经能够获取和放置 Gmail 的值 API。

本例使用GmailAPI中的“users.messages.delete”方法API。

示例脚本:

当你的脚本修改后,变成如下。

$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”的方法returns 没有值。请注意这一点。

注:

  • 在这种情况下,假设$service可以用于删除消息。如果出现范围相关的错误,请添加https://mail.google.com/的范围并重新测试。但是当范围发生变化时,请将包含访问令牌和刷新令牌的文件重新授权。这样,新的范围就会反映到访问令牌和刷新令牌中。请注意这一点。

    • 例如,如果在您当前的脚本中,作用域的使用类似于$client->setScopes(Google_Service_Gmail::GMAIL_READONLY);,请将其修改为$client->setScopes("https://mail.google.com/");。并再次授权。
  • 重要

    • 在此修改后的脚本中,消息被完全删除。所以我想建议使用示例消息对其进行测试。请注意这一点。

参考: