小编Bar*_*ar6的帖子

Gmail api python 编码/解码错误

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

\n\n

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

\n\n
def GetMimeMessage(service, user_id, msg_id):\ntry:\n  message = service.users().messages().get(userId=user_id, id=msg_id,\n                                         format=\'raw\').execute()\n\n  print (\'Message snippet: %s\' % message[\'snippet\'])\n  msg_str = base64.urlsafe_b64decode(message[\'raw\'].encode(\'utf8\'))\n  mime_msg = email.message_from_bytes(msg_str)\n  print(mime_msg)\n\n  return mime_msg\nexcept errors.HttpError as error:\n  print (\'An error occurred: %s\' % error)\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

而且 html 标签也被破坏了:

\n\n
Follow us:          =09=09=09=09=09=09=09=09=09<a href=3D"http=\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
Content-Type: text/html; charset=UTF-8\nContent-Transfer-Encoding: quoted-printable\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n

python api gmail encoding quoted-printable

2
推荐指数
1
解决办法
1864
查看次数

标签 统计

api ×1

encoding ×1

gmail ×1

python ×1

quoted-printable ×1