【问题标题】:how to fetch count of emails in a specific month in Gmail API如何在 Gmail API 中获取特定月份的电子邮件数量
【发布时间】:2018-03-26 13:06:34
【问题描述】:

我正在使用 Gmail API 来获取用户电子邮件并在图表上显示一个月内的电子邮件数量。但是遍历每封电子邮件以计算电子邮件效率不高。还有其他方法可以获取该计数吗?例如 9 月份发送或接收了多少封电子邮件?

当然,我们可以使用 after: 或 before: 过滤器,但如果我必须获取全年的计数,则需要 12 次 API 调用。如果有任何其他方式我可以在 1 次通话中获取计数?或任何其他有效的方法?谢谢。

【问题讨论】:

    标签: php email gmail gmail-api


    【解决方案1】:

    我认为您唯一的选择是列出带有查询after:<start_date> before:<end_date> 的消息,直到响应中没有nextPageToken,然后计算总数:

    function getMessageCount($service, $userId, $query) {
      $pageToken = NULL;
      $messages = array();
      $opt_param = array(
        'q' => $query
      );
      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);
    
      return count($messages);
    }
    

    如果您想获取消息之间的数量,例如Friday, September 1, 2017 12:00:00 AMSunday, October 1, 2017 12:00:00 AM,你可以这样称呼它:

    $count = getMessageCount($service, 'me', 'after:1504224000 before:1506816000');
    

    【讨论】:

      猜你喜欢
      • 2016-02-29
      • 2021-08-14
      • 2014-08-19
      • 2016-04-17
      • 2020-09-02
      • 2019-07-12
      • 1970-01-01
      • 2021-09-03
      相关资源
      最近更新 更多