Gmail returns base64 编码但列为可引用可打印
Gmail returns base64 encoded but lists as quotable printable
当我调用 Gmail API 时,我得到以下回复(显然只是摘录,因为 body 很大:
{
...
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 body 部分将电子邮件编码为 base64Url,但脚趾内容传输编码明确表示 quoted-printable。我通过 base64url 解码器 运行 它给出了正确的数据。但是 header 明确表示它是 quoted-printable
我错过了什么?
最简单的 body 部分就是这个,看起来完全正确。
"headers": [
...
{
"name": "Content-Transfer-Encoding",
"value": "base64"
} ],
"body": {
"size": 601,
"data": "R29vZ2xlIEFQSXMgRXhwbG9yZXIgd2FzIGdyYW5
当您请求 Message resource, the Gmail API
can deliver message data in one of four formats that you can set via a query string (see documentation).
以下是对每个格式选项的描述,摘自官方文档:
- "full": Returns the full email message data with body content parsed in the payload field; the raw field is not used.
(default)
- "metadata": Returns only email message ID, labels, and email headers.
- "minimal": Returns only email message ID and labels; does not return the email headers, body, or payload.
- "raw": Returns the full email message data with body content in the raw field as a base64url encoded string; the payload field is
not used.
"full" 是默认选项,其中 body 内容被解析并自动存储为数据 属性 中的 base64 编码字符串。
请记住,提供消息资源 object 是为了方便与 RFC5322 有效载荷交互,并且它始终在 base64
中提供其数据有效载荷,而不管其上的值如何Content-Transfer-Encoding
header.
如果您想使用原始 IMF(Internet Message Format - RFC5322) 文本,请在查询字符串中将格式设置为“raw”。您必须对原始字符串进行 base64 解码才能获取 IMF 数据。它看起来完全符合您的预期,但您必须编写自己的解析器来管理其内容。
当我调用 Gmail API 时,我得到以下回复(显然只是摘录,因为 body 很大:
{
...
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 body 部分将电子邮件编码为 base64Url,但脚趾内容传输编码明确表示 quoted-printable。我通过 base64url 解码器 运行 它给出了正确的数据。但是 header 明确表示它是 quoted-printable
我错过了什么?
最简单的 body 部分就是这个,看起来完全正确。
"headers": [ ... { "name": "Content-Transfer-Encoding", "value": "base64" } ], "body": { "size": 601, "data": "R29vZ2xlIEFQSXMgRXhwbG9yZXIgd2FzIGdyYW5
当您请求 Message resource, the Gmail API
can deliver message data in one of four formats that you can set via a query string (see documentation).
以下是对每个格式选项的描述,摘自官方文档:
- "full": Returns the full email message data with body content parsed in the payload field; the raw field is not used. (default)
- "metadata": Returns only email message ID, labels, and email headers.
- "minimal": Returns only email message ID and labels; does not return the email headers, body, or payload.
- "raw": Returns the full email message data with body content in the raw field as a base64url encoded string; the payload field is not used.
"full" 是默认选项,其中 body 内容被解析并自动存储为数据 属性 中的 base64 编码字符串。
请记住,提供消息资源 object 是为了方便与 RFC5322 有效载荷交互,并且它始终在 base64
中提供其数据有效载荷,而不管其上的值如何Content-Transfer-Encoding
header.
如果您想使用原始 IMF(Internet Message Format - RFC5322) 文本,请在查询字符串中将格式设置为“raw”。您必须对原始字符串进行 base64 解码才能获取 IMF 数据。它看起来完全符合您的预期,但您必须编写自己的解析器来管理其内容。