【发布时间】:2021-01-27 07:39:29
【问题描述】:
我正在尝试使用我检索到的 ID 获取收件人的电子邮件。下面是代码。
messages = service.users().threads().list(userId='me', q='to:').execute().get('threads', [])
for message in messages:
#print(message)
# print(dir(message))
# print(message.get())
if search in message['snippet']:
#print(message['id'])
message_id = message['id']
# print(message_id)
full_message = service.users().messages().get(userId='me', id=message_id, format="raw").execute()
#print(full_message)
msg_headers = full_message['payload']['headers']
#print(msg_headers)
msg_str = base64.urlsafe_b64decode(full_message['raw'].encode('ASCII'))
mime_msg = email.message_from_bytes(msg_str)
#print(mime_msg)
x = re.findall('id=(\w+)\'', str(mime_msg))
print(x)
if len(x)> 0:
return x[0]
if msg_headers[x]['name'] == "To":
return msg_headers[x[0]]['value']
else:
return None
我收到以下错误。我该如何解决这个问题?
Traceback (most recent call last):
File "C:\test\test2.py", line 102, in <module>
test = get_email_with("Test string")
File "C:\test\test2.py", line 55, in get_email_with
msg_headers = full_message['payload']['headers']
KeyError: 'payload'
【问题讨论】:
-
您从该错误消息中了解到什么?你做过调试吗?我建议阅读ericlippert.com/2014/03/05/how-to-debug-small-programs。另外,请提供完整的错误消息以及minimal reproducible example。
-
@AMC 我已经调试过了。
-
我的意思是错误说,full_message 没有任何带有“payload”键的元素,尝试调试此对象以查看它是空的,还是在另一个结构中。
标签: python google-api gmail-api google-api-python-client