我正在努力安装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 举报,一经查实,本站将立刻删除。