Я использую API GMail для получения своих ярлыков: 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
(
)
)
Кто-нибудь знает, почему это будет?
Вам нужен идентификатор ярлыка, чтобы получить количество прикрепленных к нему сообщений. Сначала выполните функцию Список, чтобы получить все метки, затем возьмите идентификатор нужной вам метки и используйте его в функции Получить.
В моем случае это возвращает:
{
"id": "Label_ID",
"name": "labelName",
"type": "user",
"messagesTotal": 11,
"messagesUnread": 0,
"threadsTotal": 11,
"threadsUnread": 0
}
Другой способ - выполнить поисковый запрос, сохранить идентификаторы сообщений в массиве и получить длину:
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))