繁体   English   中英

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 for php 删除消息。
  • 您已经能够获取和放置 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可以用于删除消息。 如果出现scope相关的错误,请添加https://mail.google.com/的scope并重新测试。 但是当范围改变时,请包含访问令牌和刷新令牌的文件重新授权。 这样,新的范围就会反映到访问令牌和刷新令牌中。 请注意这一点。

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

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

参考:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM