Python 如何获取Gmail API消息的文本/普通部分

Python 如何获取Gmail API消息的文本/普通部分,python,gmail,gmail-api,Python,Gmail,Gmail Api,因此,有时文本/纯文本位于GmailAPI恢复电子邮件的顶级“部分”数组中,而有时它嵌套在JSON中,如果有附件或内联电子邮件,则嵌套得更深 我应该如何处理始终能够重新使用body的文本/纯文本版本 感谢您在“Try this API”Gmail.messages.get[1]中直接测试不同类型的电子邮件,您可以检查不同类型的结果。我得到的结果是: 1) 纯文本消息:直接来自“有效负载”(文本/纯文本)属性 2) Html消息:“有效负载”(多部分/可选)->Parts[0](数组的第一个对象)

因此,有时文本/纯文本位于GmailAPI恢复电子邮件的顶级“部分”数组中,而有时它嵌套在JSON中,如果有附件或内联电子邮件,则嵌套得更深

我应该如何处理始终能够重新使用body的文本/纯文本版本


感谢您在“Try this API”Gmail.messages.get[1]中直接测试不同类型的电子邮件,您可以检查不同类型的结果。我得到的结果是:

1) 纯文本消息:直接来自“有效负载”(文本/纯文本)属性

2) Html消息:“有效负载”(多部分/可选)->Parts[0](数组的第一个对象)

3) 附有文件的纯文本消息:“有效负载”(多部分/混合)->Parts[0]“text/Plain”

4) 附加文件的Html消息:“有效负载”(多部分/混合)->Parts[0]“多部分/可选”->Parts[0]“text/plain”


[1]

事实上,我也有这个问题,希望在这里找到一个awnser。我决不是python专家,更重要的是,我是stackoverflow初学者:-)。但让我与你们分享我的解决方案和思路

我们的问题是messagePart嵌套了x次。因此,我们不知道我们想要检索的内容存储的深度和位置。我们还知道,如果传递的对象中没有零件对象,那么我们处于最低级别,可以停止查看

Python很幸运地接受函数递归,这意味着定义的函数可以调用自己

唯一缺少的是在顶层(在[payload]中的主体中)查找您的内容。在本例中,我查找text/plain或text/html格式的电子邮件。 我希望这能帮助您了解如何使用函数递归遍历所有部分

client = MongoClient()
db = client['gmail']
message_full =service.users().messages().get(userId='me', id='175dff5c51f1f7ab', format='full').execute()


def message_full_recursion(m):  
     for i in m:
        mimeType = (i['mimeType'])
        print(mimeType)
        
        if (i['mimeType']) in ('text/plain','text/html'):
            print('found')
        elif 'parts' in i:
            print('recursing')
            message_full_recursion(i['parts'])

message_full_recursion(message_full['payload']['parts'])