我使用this example和我的自定义参数来获取特定消息。我的问题是maxResults无法正常工作,我无法找到如何从某些域中排除邮件。这是我的自定义功能:
public function listMessages($userId) {
$client= $this->getClient();
$service = new Google_Service_Gmail($client);
$pageToken = NULL;
$messages = array();
$opt_param = array(
'maxResults' => 20,
'q'=>'!in:chats'
);
do {
try {
if($pageToken) {
$opt_param['pageToken'] = $pageToken;
}
$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;
}
我仍然收到我的所有消息(除了环聊消息,这是唯一可用的过滤器)
答案 0 :(得分:0)
Maxrows用于分页。如果结果将返回1000行并且您将最大行设置为100,则必须在nextpagetoken上翻页10次才能获得所有结果。
将maxrows设置为20不会对你有帮助,因为我相信min maxrows大约是100(我相信这是大多数Google API的默认值)。除非请求生成的行少于100行,否则永远不会少于100行。
尝试'q'=>'!@example.com'