我正在使用users.messages.get()来查找单个邮件的数据。我想解析消息的主体,并想知道1)哪个字段将单个消息的主体返回到可读的字符串格式,或2)如何将主体转换为可读格式字符串。
答案 0 :(得分:2)
第一步是检索邮件,如上所述。我只会要求包含消息的部分,称为有效负载。更具体地说,有效载荷的各个部分:
GET https://www.googleapis.com/gmail/v1/users/me/messages/{YOUR_MAIL_ID}?fields=payload%2Fparts&key={YOUR_API_KEY}
这将为您提供以下对象:
{
"payload": {
"parts": [
{
"partId": "0",
"mimeType": "text/plain",
"filename": "",
"headers": [
{
"name": "Content-Type",
"value": "text/plain; charset=UTF-8"
}
],
"body": {
"size": 56,
"data": "PGI-IFRoaXMgaXMgYSBib2xkIGV4YW1wbGUgbWFpbCwgZG9uJ3QgeW91IHRoaW5rPyA8L2I-DQo="
}
},
{
"partId": "1",
"mimeType": "text/html",
"filename": "",
"headers": [
{
"name": "Content-Type",
"value": "text/html; charset=UTF-8"
}
],
"body": {
"size": 93,
"data": "PGRpdiBkaXI9Imx0ciI-Jmx0O2ImZ3Q7IFRoaXMgaXMgYSBib2xkIGV4YW1wbGUgbWFpbCwgZG9uJiMzOTt0IHlvdSB0aGluaz8gJmx0Oy9iJmd0OzwvZGl2Pg0K"
}
}
]
}
}
在这里,你可以用纯文本和html看到邮件!
最后一个细节仍然存在。如您所见,邮件内容不可读,因为它们仍然是base64编码的。按F12打开开发人员工具,然后将内容输入到atob() - 函数进行解码。由于base64编码数据也是URL安全的,我们必须将所有“ - ”替换为“+”,将“_”替换为“/”以使其成为正确的base64。
// Plain text version
atob("PGI-IFRoaXMgaXMgYSBib2xkIGV4YW1wbGUgbWFpbCwgZG9uJ3QgeW91IHRoaW5rPyA8L2I-DQo=".replace(/\-/g, '+').replace(/\_/g, '/'))
// => "<b> This is a bold example mail, don't you think? </b>"
// HTML version
atob("PGRpdiBkaXI9Imx0ciI-Jmx0O2ImZ3Q7IFRoaXMgaXMgYSBib2xkIGV4YW1wbGUgbWFpbCwgZG9uJiMzOTt0IHlvdSB0aGluaz8gJmx0Oy9iJmd0OzwvZGl2Pg0K".replace(/\-/g, '+').replace(/\_/g, '/'))
// => "<div dir="ltr"><b> This is a bold example mail, don't you think? </b></div>"
根据您使用的语言,有很好的图书馆可以帮助您解决这个问题,但这是它的角落和碎片!