2017-01-23 73 views
0

我正尝试使用Python上的API访问Gmail。我想要所有的UNREAD消息,只有从。然而使用多个标签的Gmail API

GMAIL.users().messages().list(userId='me',labelIds='UNREAD').execute() 

,呼吁双方labelIds不起作用:

我可以调用:

GMAIL.users().messages().list(userId='me',labelIds='INBOX').execute() 

或。有人可以帮助同时使用labelIds

TIA

+0

你是怎么调用两个labelIds的? – sailesh

+0

我尝试了不同的方法。添加了一个逗号'(读,收件箱)'和'labelIds =“未读”,labelIds ='INBOX'' – chhibbz

+0

好吧,试试我刚刚发布的解决方案,请接受它是否工作。 – sailesh

回答

1

labelIds可以是一个字符串,也可以是一个字符串的Python列表。

事情是这样的:

GMAIL.users().messages().list(userId='me',labelIds=['UNREAD', 'INBOX']).execute() 

过滤类别,从初级只显示邮件收件箱中的哪个是未读。

GMAIL.users().messages().list(userId='me',labelIds=['UNREAD', 'INBOX'], q="category:primary").execute() 
+0

这里是为什么:https://developers.google.com/resources/api-libraries/documentation/gmail/v1/python/latest/gmail_v1.users.messages.html#list – nickie

+0

是啊!你是对的! @nickie – sailesh

+0

这将返回收件箱中或未读的邮件。 Grisha的答案是你想要采用的路线(用q来查询)。 –

0

我希望所有的未读消息,只能从收件箱。

UNREAD和不是真正的“标签”。尝试使用q参数代替:

GMAIL.users().messages().list(userId='me', q='in:inbox is:unread').execute() 
+1

这是正确的答案。 Gmail会在查询参数之间假设AND,以便它将返回收件箱中未读的邮件。请参阅https://support.google.com/mail/answer/7190。 –