如何使用python API打印GMail电子邮件的主题和正文


results = service.users().messages().list(
userId='me', labelIds=['INBOX'], maxResults=1).execute()
labels = results.get('messages', [])
if not labels:
print('No labels found.')
else:
print('Labels:')
for label in labels:
print(label['id'])

此脚本打印最近一封电子邮件的邮件Id。如何打印电子邮件的主题和正文?我找不到任何关于如何做到这一点的文件

1。为了减少您的发型混乱,建议将您的消息称为此类消息,而不是标签:

results = service.users().messages().list(
userId='me', labelIds=['INBOX'], maxResults=1).execute()
messages = results.get('messages', [])
if not messages:
print('No messages found.')
else:
print('Messages:')
for message in messages:
print(message['id'])

2.查看消息资源:

{
"id": string,
"threadId": string,
"labelIds": [
string
],
"snippet": string,
"historyId": string,
"internalDate": string,
"payload": {
object (MessagePart)
},
"sizeEstimate": integer,
"raw": string
}

payload包括对象MessagePart,该对象包含以下嵌套对象:

{
"partId": string,
"mimeType": string,
"filename": string,
"headers": [
{
object (Header)
}
],
"body": {
object (MessagePartBody)
},
"parts": [
{
object (MessagePart)
}
]
}

此资源允许访问bodysubject,后者包含在消息头中:

{
"name": string,
"value": string
}

但是,这些对象不会与users.messages.list一起返回,而只与users.message一起返回。get

样品:

results = service.users().messages().list(
userId='me', labelIds=['INBOX'], maxResults=1).execute()
messages = results.get('messages', [])
if not messages:
print('No messages found.')
else:
print('Messages:')
for message in messages:
print(message['id'])
messageResource = service.users().messages().get(userId="me",id=message['id']).execute()
headers=messageResource["payload"]["headers"]
subject= [j['value'] for j in headers if j["name"]=="Subject"]
print(subject)