过滤邮件列表

时间:2017-03-28 09:16:27

标签: google-api gmail gmail-api google-api-php-client php-5.6

我使用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;
}

我仍然收到我的所有消息(除了环聊消息,这是唯一可用的过滤器)

1 个答案:

答案 0 :(得分:0)

Maxrows用于分页。如果结果将返回1000行并且您将最大行设置为100,则必须在nextpagetoken上翻页10次才能获得所有结果。

将maxrows设置为20不会对你有帮助,因为我相信min maxrows大约是100(我相信这是大多数Google API的默认值)。除非请求生成的行少于100行,否则永远不会少于100行。

尝试'q'=>'!@example.com'