gpt4 book ai didi

python - Gmail api python 编码/解码错误

转载 作者:行者123 更新时间:2023-12-02 20:30:52 26 4
gpt4 key购买 nike

我有一个问题。我正在尝试使用 gmail api 读取来自 gmail 的电子邮件。我按照这里的说明进行操作https://developers.google.com/gmail/api/v1/reference/users/messages/get

我做了一些更改以在 python 3 上运行它,所以我最终得到了以下代码:

def GetMimeMessage(service, user_id, msg_id):
try:
message = service.users().messages().get(userId=user_id, id=msg_id,
format='raw').execute()

print ('Message snippet: %s' % message['snippet'])
msg_str = base64.urlsafe_b64decode(message['raw'].encode('utf8'))
mime_msg = email.message_from_bytes(msg_str)
print(mime_msg)

return mime_msg
except errors.HttpError as error:
print ('An error occurred: %s' % error)

现在的输出非常接近我想要的,但有一个问题是输出中的匈牙利重音字符很奇怪:G=C3=A1bor 而不是 Gábor

而且 html 标签也被破坏了:

Follow us:          =09=09=09=09=09=09=09=09=09<a href=3D"http=

我已经发现这与消息的编码方式有关,请参阅电子邮件标题:

Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

问题是,我似乎找不到正确解码它的方法。感谢您的帮助。

最佳答案

经过几个小时的努力解决同样的问题,我终于找到了解决方案(至少对于我的情况)。即使该线程很旧,我也会将其发布在这里,以便其他人以后可以找到它。就这样:

# Get your message
message = service.users().messages().get(userId=user_id, id=msg_id, format='full').execute()

# Get the right body data item (this part was my Heureka-moment as there are several 'data' keys)
content = message['payload']['parts'][0]['parts'][1]['body']['data']

# Encode
msg_body = base64.urlsafe_b64decode(content).decode('utf-8')

这个序列让解码/编码对我有用。关于 Base64 和 Google Gmail API 的解码/编码问题的线程有很多不同的解决方案建议,但似乎每种情况都是独一无二的。希望这个解决方案也能帮助您!

关于python - Gmail api python 编码/解码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48797523/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com