【问题标题】:Getting Message Threads, modfied after [date]获取消息线程,在 [日期] 之后修改
【发布时间】:2019-08-25 00:53:21
【问题描述】:

为什么?
我正在玩 GMAIL api,用于工作中的一个小项目

想要的结果
我试图从 Gmail API 中获得的是在某个时间戳/日期之后修改的所有消息线程。

到目前为止我有什么
到目前为止,我设法在某个日期之后创建了所有线程 - 通过使用标准 gmail 搜索查询,请参阅 - https://support.google.com/mail/answer/7190

问题
很高兴我可以在某个日期之后获得所有消息线程,但问题是当我将查询设置为:

after:[todays date - 7 days)  

这将显示最多 7 天前的所有消息线程 - 但是当我有一个 8 天前创建的消息线程并且仍在更新时怎么办?获取从现在到 7 天前修改的所有消息线程的最佳选择是什么?
检查所有消息线程,一直不是一个选项:)

代码

 $client = getClient();
 $oService = new Google_Service_Gmail($client);
 $sUser = 'me';
 $tsMailsAfter   = '1554280000';
 $sIn            = 'INBOX';

//before;, after:, in:(inbox, sent)
$aThreads = getlistThread($oService, $sUser, 'after:'.$tsMailsAfter.' in:'.$sIn);

function getlistThread($service, $userId, $aQuery = '') 
{
$threads = array();
$pageToken = NULL;
do
{
    try 
    {
        $opt_param = array();
        if ($pageToken) 
        {
            $opt_param['pageToken'] = $pageToken;
        }
        $opt_param['q']         = $aQuery;
        $threadsResponse = $service->users_threads->listUsersThreads($userId, $opt_param);
        if($threadsResponse->getThreads()) 
        {
            $threads = array_merge($threads, $threadsResponse->getThreads());
            $pageToken = $threadsResponse->getNextPageToken();
        }
    } 
    catch (Exception $e) 
    {
        print 'An error occurred: ' . $e->getMessage();
        $pageToken = NULL;
    }
}
while ($pageToken);
return $threads;
}

【问题讨论】:

    标签: php gmail gmail-api


    【解决方案1】:

    我解决了我的问题,方法是在 ->listUsersMessages() 上使用搜索查询(使用 :after),然后在数组()中收集 ID。它不是最佳解决方案,具有搜索查询 :modified_after 将是最佳解决方案 - 该解决方案绝对适用于 我的目的:)

            function listThreadsToUpdate($service, $userId, $sQuery = '') 
    {
        $pageToken = NULL;
        $messages = array();
        $opt_param = array();
        do 
        {
            try 
            {
                if ($pageToken) 
                {
                    $opt_param['pageToken'] = $pageToken;
                }
                $opt_param['q']         = $sQuery;
                $messagesResponse = $service->users_messages->listUsersMessages($userId, $opt_param);
                if ($messagesResponse->getMessages()) 
                {
                    $aMessages = array_merge($messages, $messagesResponse->getMessages());
                    $pageToken = $messagesResponse->getNextPageToken();
                }
            } 
            catch (Exception $e) 
            {
                print 'An error occurred: ' . $e->getMessage();
            }
        } while ($pageToken);
    
        $aThreadsToUpdate = array();
        if(isset($aMessages) && !empty($aMessages))
        {
            foreach ($aMessages as $oMessage) 
            {
                $aThreadsToUpdate[] = $oMessage->getThreadId();
            }
        }
        return array_unique($aThreadsToUpdate);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-20
      相关资源
      最近更新 更多