![](/img/trans.png)
[英]How to retrieve the result of a php gmail api send mail and modify the label of the message
[英]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.