Gmail 电子邮件仅在我通过 base64 解码器运行时解码标头



我正在尝试解码来自Gmail的邮件。 我正在使用 gmail API 的默认 get_message(( 函数。 看起来我正在解码电子邮件的标题,但即使我通过 base 64 解码器运行文本,电子邮件的正文仍然以未解码的方式返回。 任何帮助使电子邮件正文正确解码将不胜感激! 下面是我正在使用的函数,以及打印函数返回的内容:

def get_message(service, user_id, msg_id):
try:
message = service.users().messages().get(userId=user_id, id=msg_id, format='raw').execute()
msg_raw = base64.urlsafe_b64decode(message['raw'].encode('ASCII'))
msg_str = email.message_from_bytes(msg_raw)
content_types = msg_str.get_content_maintype()
print(msg_str)

这是我打印msg_str时得到的部分内容:

MIME-Version: 1.0
From: xxxxxxxx@xxxx.com
To: xxxxxxx@gmail.com
Reply-To: no-reply@xxxxxxx.com
Date: Mon, 15 Jun 2020 18:04:52 +0000 (UTC)
Subject: Your subject line here
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: base64
X-RCIS-Action: ALLOW
Message-ID: <gYVgv8UEScaE_tbOkDveNw@ismtpd0034p1las1.sendgrid.net>
X-SG-EID: Ap3vdjbPGAKcTGFw7Eo1svjoaFy5XYEjNVu77BufzmUAjCf6aYR+XSXjw7ibAUowXCb0UJhsslBkBD
Ruoukd4gvMabp3XWN/UbzDiqaAoGCz/WCNdNf9x3D9APOKeFYrZrE8wSn7a0pyYGkWPxBrrKKrkODD
L3t5+l5uf7hSLqOnT1Zo3YDJeczbtM7SGu//TGl3QRvFFmVAiKXmVN62sA==
X-Feedback-ID: 8340127:zoIy9G3JApamNWAibxpVx2fbkPkU9DYqDP9JHIkh0jc=:zoIy9G3JApamNWAibxpVx2fbkPkU9DYqDP9JHIkh0jc=:SG
PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy93M2MvL2R0ZCB4aHRtbCAxLjAgdHJhbnNpdGlvbmFs
Ly9lbiIgImh0dHA6Ly93d3cudzMub3JnL3RyL3hodG1sMS9kdGQveGh0bWwxLXRyYW5zaXRpb25h
bC5kdGQiPjxodG1sIHN0eWxlPSJtYXJnaW46IDA7cGFkZGluZzogMDtmb250LWZhbWlseTogJ0hl
bHZldGljYSBOZXVlJywgJ0hlbHZldGljYScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7
Ym94LXNpemluZzogYm9yZGVyLWJveCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0
bWwiPjxoZWFkIHN0eWxlPSJtYXJnaW46IDA7cGFkZGluZzogMDtmb250LWZhbWlseTogJ0hlbHZl
dGljYSBOZXVlJywgJ0hlbHZldGljYScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7Ym94

您正在获取 API 返回的消息的raw字段。此字段是编码为 Base64 的完整消息字节(您已经在解码(。

如果您查看解码的原始电子邮件的标题,您会注意到:

Content-Transfer-Encoding: base64

指示邮件正文也是 Base64 编码的,这意味着您无论如何都必须解码电子邮件的正文。否则,您可能需要深入研究message['payload']对象以查看其中是否有任何内容。

理想情况下,您将查看程序中的Content-Transfer-Encoding,以确定如何处理消息正文。您可以考虑阅读 RFC 1521,了解有关在电子邮件中指定邮件正文的详细信息。

最新更新