Python Gmail API:我如何获得消息正文?

Python Gmail API:我如何获得消息正文?,python,oauth-2.0,google-api,gmail-api,Python,Oauth 2.0,Google Api,Gmail Api,根据下面引用的文档,消息应该包含MessagePart,而MessagePart又应该包含MessagePartBody 当我运行下面的代码时(它只是示例脚本的一个修改版本,用消息替换标签) 我只获得MessageID和ThreadSID,例如: Messages: {'id': '177045ba844e1991', 'threadId': '177045ba844e1991'} {'id': '1770415ccdd222d7', 'threadId': '1770415ccdd222d7

根据下面引用的文档,消息应该包含MessagePart,而MessagePart又应该包含MessagePartBody

当我运行下面的代码时(它只是示例脚本的一个修改版本,用消息替换标签)

我只获得MessageID和ThreadSID,例如:

Messages:
{'id': '177045ba844e1991', 'threadId': '177045ba844e1991'}
{'id': '1770415ccdd222d7', 'threadId': '1770415ccdd222d7'}
{'id': '17703970573550eb', 'threadId': '17703970573550eb'}
{'id': '177031073928a223', 'threadId': '177031073928a223'}
{'id': '17702de505951773', 'threadId': '17702de505951773'}
{'id': '17702a3e6d1893de', 'threadId': '17702a3e6d1893de'}
如何使用此API获取消息的实际正文

请注意,每个消息资源只包含一个
id
和一个
threadId
。可以使用该方法获取其他消息详细信息

所以基本上这是一个两步的过程:

  • 您可以使用
    list
    获取收件箱中的电子邮件
  • 使用
    get
    阅读有关它们的信息
  • 它看起来像:

    results=service.users().messages().list(userId='me').execute()
    messages=results.get('messages',[])
    messages=[service.users().messages().get(userId='me',id=msg['id'])。为消息中的消息执行()
    
    现在,如果您这样做,您将遇到问题,因为这会使请求一个接一个。通过一个请求获取多条消息的方法是使用批处理请求:

    results=service.users().messages().list(userId='me').execute()
    message_id=results.get('messages',[])
    消息=[]
    def添加(id、消息、错误):
    #id是给定的,因为不会以相同的顺序调用它
    如果出现错误:
    打印(错误)
    其他:
    messages.append(msg)
    批处理=服务。新批处理http请求()
    对于消息_id中的消息:
    batch.add(service.users().messages().get(userId='me',id=msg['id']),add)
    batch.execute()
    
    有关批处理请求的一个重要注意事项是,调用回调的顺序可能与您开始时的顺序不同

    工具书类

    为什么要将add传递到for循环的主体中?消息列表在哪里使用?代码示例位于
    main
    函数的内部。
    add
    函数是一个回调函数。以
    batch=…
    开头的代码在函数
    add
    之外,只是
    main
    的一部分(因此它实际上没有使用自身)。带有正文的结果消息将出现在
    消息中
    ,可以随意使用。例如,您可以像在问题中那样打印它们(同样精确的6行应该可以)。
    Messages:
    {'id': '177045ba844e1991', 'threadId': '177045ba844e1991'}
    {'id': '1770415ccdd222d7', 'threadId': '1770415ccdd222d7'}
    {'id': '17703970573550eb', 'threadId': '17703970573550eb'}
    {'id': '177031073928a223', 'threadId': '177031073928a223'}
    {'id': '17702de505951773', 'threadId': '17702de505951773'}
    {'id': '17702a3e6d1893de', 'threadId': '17702a3e6d1893de'}