【问题标题】:Gmail returns base64 encoded but lists as quotable printableGmail 返回 base64 编码,但列为可引用打印
【发布时间】:2019-09-28 22:44:33
【问题描述】:

当我调用 Gmail API 时,我得到了以下信息(显然只是摘录,因为正文很大:

{
  ...
  payload: {
    ...
    parts: [
      {
        "partId": "1",
        "mimeType": "text/html",
        "filename": "",
        "headers": [
         {
          "name": "Content-Type",
          "value": "text/html; charset=\"UTF-8\""
         },
         {
          "name": "Content-Transfer-Encoding",
          "value": "quoted-printable"
         }
        ],
        "body": {
             "size": 4696,
             "data": "PCFET0NUWVBFIGh0bWw-PGh0bWwgbGFuZz1lbj48....

我刚刚包含了相关部分。您会看到 html 正文部分将电子邮件编码为 base64Url,但 toe 内容传输编码清楚地表明引用可打印。我通过 base64url 解码器运行它,它给出了正确的数据。但标题明确表示它是可引用的打印

我错过了什么?

简单的身体部分就是这个,看起来完全正确。

"headers": [
 ...
{
 "name": "Content-Transfer-Encoding",
 "value": "base64"
}   ],
"body": {
 "size": 601,
 "data": "R29vZ2xlIEFQSXMgRXhwbG9yZXIgd2FzIGdyYW5

【问题讨论】:

    标签: gmail-api


    【解决方案1】:

    当您请求Message resource 时,Gmail API 可以以您可以通过查询字符串 (see documentation) 设置的四种格式之一传送消息数据。

    以下是每个格式选项的说明,取自官方文档:

    • full”:返回完整的电子邮件数据,正文内容在payload字段中解析; raw 字段未使用。 (默认)
    • 元数据”:仅返回电子邮件 ID、标签和电子邮件标头。
    • minimal”:仅返回电子邮件 ID 和标签;不返回电子邮件标头、正文或有效负载。
    • raw”:以base64url编码字符串的形式返回原始字段中包含正文内容的完整电子邮件数据;有效载荷字段是 没用过。

    full”是默认选项,其中正文内容被解析并自动存储为 data 属性中的 base64 编码字符串。

    请记住,提供消息资源对象是为了方便与RFC5322 有效负载交互,并且它始终在base64 中提供其数据有效负载,而不管Content-Transfer-Encoding 标头上的值如何。

    如果您想处理原始的 IMF(Internet Message Format - RFC5322) 文本,请在查询字符串中将格式设置为“raw”。您必须对原始字符串进行 base64 解码才能获取 IMF 数据。它看起来与您期望的完全一样,但是您必须编写自己的解析器来管理其内容。

    【讨论】:

    • 那么为什么内容传输编码在一部分被列为 base64 而另一部分被列为quoted-printable?
    • 消息以 IMF(即“raw”格式)传输,html 被编码为可引用打印,但当您获取 Message 时,它可以方便地为您转换使用 GMail API 的资源。根据经验,标头描述了最初传输的 IMF 消息;您在 Gmail 的自定义数据信封中(即在 body 属性中)获得的数据会自动转换该有效负载,以消除您自己转换它(从可引用打印)的乏味。
    • Gmail API 似乎只对可引用打印的编码执行此操作。
    猜你喜欢
    • 2013-07-09
    • 1970-01-01
    • 2013-02-03
    • 2010-09-22
    • 2017-07-03
    • 2011-07-01
    • 1970-01-01
    • 2020-03-16
    • 2014-07-31
    相关资源
    最近更新 更多