编程语言
首页 > 编程语言> > php-当maxResults设置为100时,Gmail List API返回所有消息

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