Gmail API - ListUsersLabels - 没有邮件总数
Posted
技术标签:
【中文标题】Gmail API - ListUsersLabels - 没有邮件总数【英文标题】:Gmail API - ListUsersLabels - No messagesTotal 【发布时间】: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
(
)
)
有人知道为什么会这样吗?
【问题讨论】:
【参考方案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))
【讨论】:
以上是关于Gmail API - ListUsersLabels - 没有邮件总数的主要内容,如果未能解决你的问题,请参考以下文章
Gmail现在支持安排电子邮件,如何使用gmail rest api工作,还是api支持此功能?
尝试通过 API 删除 gmail 邮件时出现 401 错误