首页 > 解决方案 > 如何阅读整条消息而不仅仅是片段

问题描述

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

我目前正在使用上面的代码,它没有得到整个消息。我在文档中看到 google API 有 raw 和 full 选项,但是 raw 选项没有以可读的方式打印,我无法让 full 选项工作。

谢谢 !

标签: pythongoogle-apigmail-apigoogle-api-python-client

解决方案


这对我来说是这样的:

# Gets message header first
msg_header = service.users().messages().get(
                                                    userId=user_id,
                                                    id=msg_id,
                                                    format="full",
                                                    metadataHeaders=None
                                                    ).execute()

# Gets message body from header
body = base64.urlsafe_b64decode(msg_header.get("payload").get("body")\
            .get("data").encode("ASCII")).decode("utf-8")

正文是 HTML 格式的,所以在我的例子中,我使用 BeautifulSoup 来提取我需要的信息,如下所示:

soup = bs(body, 'html.parser')

# Loop on e-mail table
for row in soup.findAll('tr'): 
            aux = row.findAll('td')
            info[aux[0].string] = aux[1].string

信息提取将取决于消息的模式。就我而言,我收到的所有消息都具有相同的模式。


推荐阅读