首页 > 解决方案 > 未读电子邮件标签

问题描述

在 PHP 中,我使用 Gmail api 获取客户端的 gmail 收件箱。

使用

Array ( ['maxResults'] => 50, ['labelIds'] => INBOX, ['q'] => is:unread)

我正在邮箱/gmail 中搜索未读电子邮件,但我收到了 1 封标有

[labelIds] => Array([0] => Label_2 [1] => SENT). 

gmail如何识别这封电子邮件以及unread我可以突出显示这封unread电子邮件的依据是什么?我的第二个问题是电子邮件标有SENT它是如何出现的INBOX

$service = new Google_Service_Gmail($client);
        $batch = new Google_Http_Batch($client);
        $userId='me';
        $threads = array();
        $pageToken = NULL;
        $param = array();
        $getPageToken = $getParam('pageToken');
        if ($getPageToken && $getPageToken!='') {
            $param['pageToken'] = $getPageToken;
            $pageToken = $getPageToken;
        }
        if($getParam('limit'))
            $param['maxResults']=$getParam('limit');
        else
            $param['maxResults'] = 50;
        if($getParam('in')) {
            $this->view->in=$getParam('in');
            $param['labelIds'] = strtoupper($this->view->in);
        }
        else
            $param['labelIds'] = 'INBOX';
        $search = "";
        $read = $getParam('read_status');
        if($read && (@$read=='read'||$read=='unread'))
            $search = 'is:'.$read;

        if($getParam('search')) {
            $this->view->search = $getParam('search');
            $search .= " ".$this->view->search;
        }
        if($search)
            $param['q'] = $search;
            $threadsResponse=$this->gmailApi->get_threads($service,$userId,$param);
        if($threadsResponse) {
                $threads=$threadsResponse->getThreads();
            $this->view->next_page=$threadsResponse->getNextPageToken();
            $client->setUseBatch(true);
            foreach ($threads as $key => $val) {
                    $thread = $service->users_threads->get($userId, $val->id,['format' => 'full', 'metadataHeaders' => ['From','Date','Subject']]);      
                $batch->add($thread, "mail-".$val->id);
            }
            $results = $batch->execute();
                $threads=$this->gmailApi->get_batch_messages($service,$userId,$results);

谁能告诉我这是否是这里产生的问题(https://issuetracker.google.com/issues/135166258

标签: phpgmail-api

解决方案


您只搜索未读的电子邮件。如果您想要未读并在收件箱标签中,请尝试使用

q = label:unread label:inbox 

将来测试 gmail 搜索的最简单方法是在 gmail Web 应用程序中,您可以在那里获得所需的搜索结果,然后将其复制到 q 中。


推荐阅读