Python Gmail API:我如何获得消息正文?
根据下面引用的文档,消息应该包含MessagePart,而MessagePart又应该包含MessagePartBody 当我运行下面的代码时(它只是示例脚本的一个修改版本,用消息替换标签) 我只获得MessageID和ThreadSID,例如: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
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()
有关批处理请求的一个重要注意事项是,调用回调的顺序可能与您开始时的顺序不同
工具书类
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'}