【问题标题】:Gmail API cannot get email dataGmail API 无法获取电子邮件数据
【发布时间】:2020-09-02 11:55:40
【问题描述】:

我正在尝试使用 gmail API 打印我的电子邮件:

results = service.users().messages().list(userId='me',labelIds = ['INBOX']).execute()

messages = results.get('messages', [])

if not messages:
    print("No messages found.")
else:
    count = 0 
    for message in messages:
        count += 1

        msg = service.users().messages().get(userId='me', id=message['id']).execute()

        full_msg = base64.urlsafe_b64decode(msg['payload']['body']['data'].encode("ASCII")).decode("utf-8")
        print("Email {}: {}".format(count, full_msg))

它正确打印了第一封电子邮件,但在第二个 for 循环中,我得到了 KeyError'data'。如果我尝试通过 print(msg['snippet']) 打印每封电子邮件的 sn-p,它工作正常。

【问题讨论】:

    标签: python python-3.x gmail-api


    【解决方案1】:

    msg['payload']['body']['data'] 会返回电子邮件附件,但并非每封邮件都有附件。


    • 如果您想检索它存在的附件 - 执行一个条件语句来验证 msg['payload']['body']['size'] 在继续解码和打印之前不等于0
    • 如果您想检索邮件正文内容而不是附件,您可以按照文档中的说明进行操作

    【讨论】:

      猜你喜欢
      • 2015-12-15
      • 2014-08-19
      • 1970-01-01
      • 2023-03-14
      • 2014-09-07
      • 2021-05-07
      • 2019-06-04
      • 2014-11-24
      相关资源
      最近更新 更多