微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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循环…

希望这可以帮助!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐