当前位置: 首页 > 知识库问答 >
问题:

Gmail返回base64编码但列出为可报价可打印

吕寒
2023-03-14

当我调用Gmail API时,我得到了以下结果(显然只是一个节选,因为Gmail的体是巨大的:

{
  ...
  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内容传输编码清楚地显示为quoted-printable。我通过base64url解码器运行它,它给出了正确的数据。但标题明确表示它是可打印的

我错过了什么?

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

共有1个答案

卢光远
2023-03-14

当您请求消息资源时,Gmail API可以通过查询字符串(参见文档)设置四种格式之一来传递消息数据。

以下是取自正式文件的每个格式选项的说明:

  • “full”:返回在有效负载字段中解析了正文内容的完整电子邮件消息数据;未使用raw字段。(默认)
  • “元数据”:仅返回电子邮件ID、标签和电子邮件头。
  • “最小”:仅返回电子邮件消息ID和标签;不返回电子邮件头、正文或有效负载。
  • “raw”:以base64url编码字符串的形式返回在raw字段中包含正文内容的完整电子邮件消息数据;“有效负载”字段未使用。

请记住,提供消息资源对象是为了方便与RFC5322有效负载交互,它总是在base64中提供其数据有效负载,而不管content-transfer-encode头上的值如何。

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

 类似资料:
  • 问题内容: 我运行以下代码: 游乐场: http : //play.golang.org/p/qbkEIZRTPQ 输出: 所需的输出: 为什么base64编码它就像普通的一样? 毕竟,RawMessage的MarshalJSON实现只是返回字节片 问题答案: 在螺母中找到答案 传递给的值必须是正常工作的指针:

  • 我希望我的类有一个字段,该字段返回所有公共访问的不可变列表,但在对象实例中,我希望列表是可变的,以便我可以向其添加元素。 我试过了,但不确定这是否被视为良好做法?

  • 我正在尝试解码一个Base64编码的字符串,而当使用UTF8编码时,它总是返回nil。我尝试将字符编码更改为几种不同的选项,但无法使其返回与将其放入https://www.base64decode.org/这样的网站时相同的值 我尝试解码的字符串是“qc6msdfm1pizbp0szoqmoq==” 下面是我用来测试的代码

  • 我正在尝试使用以下代码在Swift中将base64字符串解码为图像: 不幸的是,变量decodedData的值为nil 通过代码调试,我验证了变量encodedImageData不是零,是正确的编码图像数据(通过使用在线base64到图像转换器验证)。我的问题背后的原因可能是什么?

  • 介绍 Base64编码是用64(2的6次方)个ASCII字符来表示256(2的8次方)个ASCII字符,也就是三位二进制数组经过编码后变为四位的ASCII字符显示,长度比原来增加1/3。 使用 String a = "伦家是一个非常长的字符串"; //5Lym5a625piv5LiA5Liq6Z2e5bi46ZW/55qE5a2X56ym5Liy String encode = Base64.en

  • 我需要在Java的Base64编码中编码一些数据。我该怎么做?提供Base64编码器的类的名称是什么? 我尝试使用类,但没有成功。我有下面一行Java七号的代码: 我在用Eclipse。Eclipse将这一行标记为错误。我导入了所需的库: 但是,它们都显示为错误。我在这里发现了一个类似的帖子。 我使用Apache Commons作为建议的解决方案,包括: 并导入从以下网址下载的JAR文件:http