GMail API,直接从线程获取消息,而不是片段

时间:2017-04-20 09:15:40

标签: python gmail gmail-api

我实际上正在使用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()
每个线程都是

,这是我慢速代码的主要来源。

0 个答案:

没有答案