php-当maxResults设置为100时,Gmail List API返回所有消息
作者:互联网
我正在努力安装Gmail List API,但由于某种原因,即使将maxResults设置为100,它也会返回收件箱中的所有5,000条消息.这是我当前的代码:
$pageToken = NULL;
$messages = array();
$opt_param = array();
do {
try {
if ($pageToken) {
$opt_param['pageToken'] = $pageToken;
$opt_param['maxResults'] = 100;
$opt_param['labelIds'] = 'INBOX';
}
$messagesResponse = $service->users_messages->listUsersMessages($userId, $opt_param);
if ($messagesResponse->getMessages()) {
$messages = array_merge($messages, $messagesResponse->getMessages());
$pageToken = $messagesResponse->getNextPageToken();
}
} catch (Exception $e) {
print 'An error occurred: ' . $e->getMessage();
}
} while ($pageToken);
foreach ($messages as $message) {
print 'Message with ID: ' . $message->getId() . '<br/>';
}
return $messages;
我不确定我要去哪里,但是我需要能够将收件箱过滤到最近发送的100条消息.
解决方法:
所以我才意识到,您正在收到所有邮件,因为即使您以100片的形式收到邮件,您最终还是会循环执行直到您将所有邮件都收进收件箱…
如果只想要前100个,请尝试以下方法:
$messages = array();
try {
$opt_param = array(
'maxResults' => 100,
'labelIds' => 'INBOX'
);
$messagesResponse = $service->users_messages->listUsersMessages($userId, $opt_param);
$messages = $messagesResponse->getMessages();
} catch (Exception $e) {
print 'An error occurred: ' . $e->getMessage();
}
if(!empty($messages)) {
foreach ($messages as $message) {
print 'Message with ID: ' . $message->getId() . '<br/>';
}
}
return $messages;
所以我基本上删除了do / while循环…
希望这可以帮助!
标签:gmail-api,php 来源: https://codeday.me/bug/20191111/2022067.html