对于某些消息,我认为没有'部分'零件。我认为下面的代码涵盖了大多数消息,但仍然存在一些错误:'数据'当试图得到一些消息。我查看了这些消息的json结果,它们都包含数据',不确定发生了什么。 Traceback显示keyerror来自包含'部分的消息。
回溯
Traceback (most recent call last):
File "gmail.py", line 168, in <module>
final_message_list.append(GetMessage(gmail_service, 'me', message_id))
File "gmail.py", line 150, in GetMessage
message_raw = message['payload']['parts'][0]['body']['data']
(在GetMessage中)
# Pull Raw Message Body from Response, some emails may not contain 'parts'
if 'parts' in message['payload']:
message_raw = message['payload']['parts'][0]['body']['data']
else:
message_raw = message['payload']['body']['data']
答案 0 :(得分:0)
经过一番调查,这是我现在能做的最好的,如果有人有更好的解决方案请发帖。
看起来导致失败的问题有一个附件,也许附件是有点混淆了消息结构的东西。我已经能够看到附件消息中'Parts'中的mimeType与非附件消息(text / plain)不同(多部分/替代)。因此,我已经能够通过在尝试解析消息体之前添加“if”语句来覆盖这种情况,如下所示。
if 'parts' in message['payload']:
if message['payload']['parts'][0]['mimeType'] == 'multipart/alternative':
message_raw = message['payload']['parts'][0]['parts'][0]['body']['data']
else:
message_raw = message['payload']['parts'][0]['body']['data']
else:
message_raw = message['payload']['body']['data']