繁体   English   中英

如何在Gmail客户端库中的Gmail批量修改API调用中发送消息ID

[英]How to send message IDs in Gmail batch modify API call in php client library

我已经配置了所有内容并且工作正常,作为测试我正在尝试使用一些过滤的电子邮件并将其更新为已读。 单个更新正在使用以下代码

            $mods = new Google_Service_Gmail_ModifyMessageRequest();
            $mods->setRemoveLabelIds('UNREAD');
            foreach ($messages as $message) {
                try {
                    $message = $service->users_messages->modify($userId, $messageId, $mods);
                    print 'Message with ID: ' . $messageId . ' successfully modified.';
                } catch (Exception $e) {
                    print 'An error occurred: ' . $e->getMessage();
                }
                print 'Message with ID: ' . $message->getId() . '<br/>';
            }

我试图参考文档以了解如何将参数设置为batchmodify函数。 但没有详细说明。 所以我在google客户端库中读取了源文件,发现它只接受三个参数,如下所示。

class Google_Service_Gmail_Resource_UsersMessages扩展了Google_Service_Resource

public function batchModify($userId, Google_Service_Gmail_BatchModifyMessagesRequest $postBody, $optParams = array())

所以我尝试下面的代码

        $mods = new Google_Service_Gmail_BatchModifyMessagesRequest();
        $mods->setRemoveLabelIds(['UNREAD']);
        $msgIdString = '';
        foreach ($messages as $message) {
            $id = $message->getId();
            $msgIdString .= " $id";
        }
        echo $msgIdString;
        try {
            $message = $service->users_messages->batchModify($user, $mods);   
        } catch (Exception $e) {
            print 'An error occurred: ' . $e->getMessage();
        }

但这给了我一个错误

An error occurred: { "error": { "errors": [ { "domain": "global", "reason": "invalidArgument", "message": "No message ids specified." } ], "code": 400, "message": "No message ids specified." } }

所以我的问题是我仍然找不到我应该放置消息ID的地方。

在浪费了一些时间后,我找到了它。 我在这里提到它将来对某人有帮助,实际上ID应该是一个数组而不是一个字符串。 这是我之前做过的错误。 所以我将所有ID都推送到$ msgIdArray并发送。 现在它正在运作。

        foreach ($messages as $message) {
            $id = $message->getId();
            $msgIdString .= " '$id', ";
            array_push($msgIdArray, $id);
        }
        echo $msgIdString;
        if (!empty($msgIdArray)) {
            $mods = new Google_Service_Gmail_BatchModifyMessagesRequest();
            $mods->setRemoveLabelIds(['UNREAD']);
            $mods->setIds($msgIdArray);
            try {
                $message = $service->users_messages->batchModify($user, $mods);
            } catch (Exception $e) {
                print 'An error occurred: ' . $e->getMessage();
            }
        }

暂无
暂无

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

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