当我调用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,但是内容传输编码清楚地表明quoted-printable。我通过base64url解码器运行它,它提供了正确的数据。但是标头明确指出它是带引号的可打印
我想念什么?
简单的身体部分是这个,看起来很正确。
"headers": [ ... { "name": "Content-Transfer-Encoding", "value": "base64" } ], "body": { "size": 601, "data": "R29vZ2xlIEFQSXMgRXhwbG9yZXIgd2FzIGdyYW5
答案 0 :(得分:1)
当您请求Message resource时,Gmail API
可以采用可通过查询字符串(see documentation)设置的四种格式之一传递消息数据。
以下是每种格式选项的说明,摘自官方文档:
- “ 完整”:返回具有在有效载荷字段中分析的正文内容的完整电子邮件数据; 原始字段未使用。 (默认)
- “ 元数据”:仅返回电子邮件ID,标签和电子邮件标题。
- “ 最小”:仅返回电子邮件ID和标签;不返回电子邮件标题,正文或有效载荷。
- “ 原始”:返回原始字段中包含正文内容的完整电子邮件消息数据,作为base64url编码的字符串;有效负载字段是 不使用。
“ 完整”是默认选项,其中,正文内容被解析并自动以base64编码的字符串存储在data属性中。
请记住,提供Message资源对象是为了方便与RFC5322有效负载进行交互,并且无论base64
上的值如何,它总是在Content-Transfer-Encoding
中提供其数据有效负载标头。
如果要处理原始IMF(Internet Message Format - RFC5322)文本,请在查询字符串中将格式设置为“ 原始”。您必须对原始字符串进行base64解码才能获得IMF数据。它的外观将完全符合您的期望,但是您必须编写自己的解析器来管理其内容。