【问题标题】:Gmail API - ListUsersLabels - No messagesTotalGmail API - ListUsersLabels - 没有邮件总数
【发布时间】:2019-12-04 15:32:56
【问题描述】:

我正在使用 GMail API 来检索我的标签: https://developers.google.com/gmail/api/v1/reference/users/labels/list

我的代码如下:

$userId = 'me';

$labels = array();

try {
    $labelsResponse = $service->users_labels->listUsersLabels($userId);

    if ($labelsResponse->getLabels()) {
        $labels = array_merge($labels, $labelsResponse->getLabels());
    }

    foreach ($labels as $label) {
        echo "<pre>";
        print_r($label);
        echo "</pre>";
    }
} catch (Excetion $e) {
    print 'An error occurred: ' . $e->getMessage();
}

这一切似乎都可以正常工作,但它永远不会返回标签内的消息总数:

Google_Service_Gmail_Label Object
(
    [colorType:protected] => Google_Service_Gmail_LabelColor
    [colorDataType:protected] => 
    [id] => INBOX
    [labelListVisibility] => labelShow
    [messageListVisibility] => hide
    [messagesTotal] => 
    [messagesUnread] => 
    [name] => INBOX
    [threadsTotal] => 
    [threadsUnread] => 
    [type] => system
    [internal_gapi_mappings:protected] => Array
        (
        )

    [modelData:protected] => Array
        (
        )

    [processed:protected] => Array
        (
        )

)

有人知道为什么会这样吗?

【问题讨论】:

    标签: php gmail-api


    【解决方案1】:

    您需要标签 ID 来获取附加到它的消息数量。首先执行List函数获取所有标签,然后取你需要的标签的Id,在Get函数中使用。

    在我的情况下,这会返回:

    {
     "id": "Label_ID",
     "name": "labelName",
     "type": "user",
     "messagesTotal": 11,
     "messagesUnread": 0,
     "threadsTotal": 11,
     "threadsUnread": 0
    }
    

    另一种方法是进行搜索查询,将消息 ID 存储在数组中,并获取长度:

    def get_emails():
            user_id = 'me' #Your email
            mail_ids = []
            query = 'label:your_label' 
            response = mail_service.users().messages().list(userId=user_id, q=query).execute()
            items = response.get('messages', [])
            if not items:
                    print('No mails found')
                    sys.exit()
            else:
                    for items in items:
                            mail_ids.append(items['id'])
            print(len(mail_ids))
    

    【讨论】:

      猜你喜欢
      • 2014-08-30
      • 2016-05-15
      • 2014-11-27
      • 2016-12-16
      • 2017-07-07
      • 2017-12-19
      • 2016-10-01
      • 2018-03-24
      相关资源
      最近更新 更多