将单个邮件的正文转换为字符串

时间:2015-06-05 19:46:04

标签: gmail-api

我正在使用users.messages.get()来查找单个邮件的数据。我想解析消息的主体,并想知道1)哪个字段将单个消息的主体返回到可读的字符串格式,或2)如何将主体转换为可读格式字符串。

1 个答案:

答案 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">&lt;b&gt; This is a bold example mail, don&#39;t you think? &lt;/b&gt;</div>"

根据您使用的语言,有很好的图书馆可以帮助您解决这个问题,但这是它的角落和碎片!