2016-07-27 79 views
3

我正在实现一个可以阅读电子邮件的机器人,我正在关注Gmail API。我可以阅读所有标签,并将其存储在列表中。我不能阅读标签Gmail API python实现

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

标签和消息是分开的东西。您必须[列出讯息](https://developers.google.com/gmail/api/v1/reference/users/messages/list#examples),然后[让他们](https://developers.google.com/gmail/api/v1/reference/users/messages/get#examples)。 – Tholle

+0

我的范围是否正确申报? – CyberDuck

+0

顺便说一句,官方文档也可以在Python中获得:https://developers.google.com/gmail/api/v1/reference/users/messages/list#python –

回答

2

我觉得这是你应该做的事情:

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

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

在进一步阅读,这似乎是一个2阶段过程。

首先,你需要抓住的邮件列表与查询:

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() 
0

这里的错误是,你正在使用的“获取标签的方法而不是消息。 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()