Gmail API python实现

时间:2016-07-27 09:45:05

标签: python gmail-api

我正在实施一个可以阅读电子邮件的机器人,我正在关注Gmail API。我可以阅读所有标签,并将其存储在列表中。我无法阅读标签内的消息

credentials = get_credentials()
http = credentials.authorize(httplib2.Http())
service = discovery.build('gmail', 'v1', http=http)
results = service.users().labels().get('me',"INBOX").execute()
print (results.getName())

我收到错误 -

results = service.users().labels().get('me',"INBOX").execute()
TypeError: method() takes exactly 1 argument (3 given)

官方api文档实现get label在java中。 有人可以告诉我我做错了吗?

SCOPES = 'https://www.googleapis.com/auth/gmail.readonly','https://mail.google.com/','https://www.googleapis.com/auth/gmail.modify','https://www.googleapis.com/auth/gmail.labels'

2 个答案:

答案 0 :(得分:2)

我认为这是你应该做的:

 results = service.users().labels().list(userId='me').execute()

从官方文件中: https://developers.google.com/gmail/api/quickstart/python

进一步阅读后,这似乎是一个两阶段的过程。

首先,您需要使用查询获取消息列表:

response = service.users().messages().list(userId=user_id, q=query,
                                     pageToken=page_token).execute()

然后你通过ID获取消息:

message = service.users().messages().get(userId=user_id, id=msg_id).execute()

答案 1 :(得分:0)

这里的错误是你对标签而不是消息使用'get'方法。此get方法用于查找有关标签的信息,例如该标签内未读消息的数量。

您可以在下面的行中看到您要求的.labels

results = service.users().labels().get('me',"INBOX").execute()

您是正确的,此示例仅在Java中显示。如果你想让get(for labels)方法在python中工作,那么就是一个使用代码的例子。

results = service.users().labels().get(userId='me',id='Label_15').execute()