我实际上正在使用Python的GMail API,并且我成功检索了来自给定标签和接收器的所有线程的所有消息,它看起来像这样:
credentials = get_credentials()
http = credentials.authorize(httplib2.Http())
service = discovery.build('gmail', 'v1', http=http)
response = service.users().threads().list(userId="me",
labelIds=["SENT"],
q="to:"+to_address).execute()
threads = []
if 'threads' in response:
threads.extend(response['threads'])
for thread in threads:
thread = service.users().threads().get(userId="me", id=thread['id']).execute()
messages = thread['messages']
for message in messages:
message = service.users().messages().get(userId="me", id=message['id'], format="raw").execute()
# [...] Work on data, code detail not shown here
正如您所看到的,我从发送的电子邮件中检索每个线程到特定地址,并且我进行了大量的api访问以检索每条消息的数据。
我觉得优化API访问有更好的方法,因为它实际上很慢。
对于大约15个主题和40封电子邮件,大约需要15秒,必须有更好的方法。
我的主要问题是片段。执行此行时:
response = service.users().threads().list(userId="me",
labelIds=["SENT"],
q="to:"+to_address).execute()
我不是直接收到邮件而是直接收取邮件,所以我不得不这样做:
thread = service.users().threads().get(userId="me", id=thread['id']).execute()
每个线程都是,这是我慢速代码的主要来源。