【问题标题】:How to get content['payload']['body']['data'] first mail by gmail api如何通过gmail api获取内容['payload']['body']['data']第一封邮件
【发布时间】:2018-11-25 08:52:00
【问题描述】:

我正在尝试通过 gmail api 获取邮件正文。

message = self.service.users().messages().get(userId=user, id=i,format='full').execute()

当我输入最后一个电子邮件 ID 时。一直找不到content['payload']['body']['data']的内容

是这样的。

"body": {
    "size": 0
}

当然它有消息体。

我可以通过content['snippet'] 获得总和,但我无法获得消息正文。

如果您对此有任何想法,请帮助我。

【问题讨论】:

  • 能否提供日志?
  • 虽然我不确定这是否是你想要的,res = [e['body']['size'] for e in message['payload']['parts']]res = [e['body']['data'] for e in message['payload']['parts']] 怎么样? message 来自您的 sn-p。
  • 您要查找的部分位于不同的位置,具体取决于它是什么类型的消息。 This answer 可能会给你一些启发。

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


【解决方案1】:

我通过这种方法解决了我的问题。谢谢田池!

def data_encoder(text):
    if len(text)>0:
        message = base64.urlsafe_b64decode(text)
        message = str(message, 'utf-8')
        message = email.message_from_string(message)
    return message


def readMessage(content)->str:
    message = None
    if "data" in content['payload']['body']:
        message = content['payload']['body']['data']
        message = data_encoder(message)
    elif "data" in content['payload']['parts'][0]['body']:
        message = content['payload']['parts'][0]['body']['data']
        message = data_encoder(message)
    else:
        print("body has no data.")
    return message

【讨论】:

  • 欢迎。我很高兴你的问题得到了解决。你可以接受你的答案。这样,其他有相同问题的用户可以知道这是已解决的答案。
  • @Nori - 我很抱歉错误地拒绝了你的答案,而我实际上是想对它投赞成票。所以我通过删除注释行来编辑它。一旦它得到同行评审,我会投同样的票。
猜你喜欢
  • 2016-11-30
  • 1970-01-01
  • 2019-11-04
  • 2016-04-30
  • 1970-01-01
  • 2021-02-04
  • 2019-07-29
  • 1970-01-01
  • 2018-08-25
相关资源
最近更新 更多