为了账号安全,请及时绑定邮箱和手机立即绑定

PHP Gmail Api - 删除邮件

PHP Gmail Api - 删除邮件

PHP
开心每一天1111 2024-01-19 15:49:03
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)));}
查看完整描述

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


查看完整回答
反对 回复 2024-01-19
  • 1 回答
  • 0 关注
  • 82 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信