def getbodyinbox():
service = build('gmail', 'v1', credentials=creds)
label_name = "READ-BY-SCRIPT"
label_id = 'Label_8507504117657095973'
results = service.users().messages().list(
userId='me', q="-label:"+label_name, maxResults=1).execute()
messages = results.get('messages', [])
body = []
if not messages:
body = "no messages"
return body
else:
for message in messages:
msg = service.users().messages().get(
userId='me', id=message['id']).execute()
labels = msg['labelIds']
if "INBOX" in labels:
headers = msg['payload']['headers']
headers = str(headers)
print(headers)
if "class_ix" in headers:
body.append(msg['payload']['parts'])
if 'data' in body[0][0]['body']:
body = base64.urlsafe_b64decode(
body[0][0]['body']['data'])
elif 'data' in body[0][1]['body']:
body = base64.urlsafe_b64decode(
body[0][1]['body']['data'])
body = str(body)
return body
print(getbodyinbox())
到目前为止,这是我的代码,其中删除了凭据的部分。它获取没有标签“READ-BY-SCRIPT”的最新电子邮件的正文,该标签也带有标签“收件箱”。我如何调整它以获取电子邮件的发件人?
答案 0 :(得分:0)
您可以在 Message -> payload -> headers
中获取电子邮件的发件人您只需要匹配 header['name'] == 'From'
并获得其等效的 header['value']
示例 Message 响应正文(用于标题):
{
"payload": {
"partId": "",
"mimeType": "multipart/alternative",
"filename": "",
"headers": [
{
"name": "From",
"value": "User \u003cuser@email.com\u003e"
},
.....
{
"name": "Subject",
"value": "TEST EMAIL"
},
],
}
}
示例代码:
headers = msg['payload']['headers']
for header in headers: # getting the Sender
if header['name'] == 'From':
msg_from = header['value']
break
标头发件人值具有这种格式:"User \u003cuser@email.com\u003e"
您可以通过解析从 start 到 \u003c
标记的字符串来获取发件人的姓名,而您可以通过解析 \u003c
和 \u003e
中包含的字符串来获取发件人的电子邮件标签。