【问题标题】:How to avoid loading attachments data from Gmail Rest API get message如何避免从 Gmail Rest API 加载附件数据获取消息
【发布时间】:2017-01-26 10:17:55
【问题描述】:

如何避免通过获取消息请求从 Gmail Rest API 加载附件数据。

使用 fields 参数至少我们可以避免加载几个字段,但是当我想加载邮件正文时,附件数据也会像 IMAP 一样与正文一起出现

【问题讨论】:

    标签: gmail-api


    【解决方案1】:

    您不会像在 IMAP 中那样获得附件。您会收到一个attachmentId,您必须在附加请求中使用它才能获取附件。

    我刚刚向自己发送了一条带有附加图片的消息。 API 的响应如下所示:

    {
     "id": "1573ec1aa0976b42",
     "threadId": "1573ec1aa0976b42",
     "labelIds": [
      "SENT",
      "INBOX",
      "IMPORTANT",
      "UNREAD"
     ],
     "snippet": "",
     "historyId": "939514",
     "internalDate": "1474226662000",
     "payload": {
      "mimeType": "multipart/related",
      "filename": "",
      "headers": [ ... ],
      "body": {
       "size": 0
      },
      "parts": [
       {
        "mimeType": "multipart/alternative",
        "filename": "",
        "headers": [
         {
          "name": "Content-Type",
          "value": "multipart/alternative; boundary=94eb2c0d3cba8637a2053ccd2461"
         }
        ],
        "body": {
         "size": 0
        },
        "parts": [
         { ... },
         {
          "partId": "1",
          "mimeType": "image/png",
          "filename": "Screen Shot",
          "headers": [ ... ],
          "body": {
           "attachmentId": "ANGjdJ-bmCvsIaV-4KfALXzVV_D567w4i6ksLnwIZhLAl3VXCE335663UbmOLC_vbLrCFusNtnWVpdTv3i88uR482kFwLZqAcwmI7C5gFlamob2aK4-lqAPlCZs17jtCQR9y5Mt4nnpP_Kg64N9qgXbDF0E2vYnEw4xwtEKEo4fRIAbc94ZjjfynFD832mh1B37XFMt-bYw9wkNv24xBife0koBNYpKs-gGLJkfu2EoZouqunGDX9ry1jq2jW2AClWcFXPXvgRBMjUcoRDPtvb9LLLrBhDjU1hu6r1Ibc3c2BSoBogT8QyIp2VUCuFU",
           "size": 1511996
          }
         }
        ]
       },
       "sizeEstimate": 1513185
    }
    

    如您所见,它只包含一个attachmentId 而没有实际的附件数据。

    【讨论】:

    • 感谢 Tholle 的快速回答。我正在使用 gmail java API 并使用获取消息请求。你能告诉我你在请求中使用的参数吗?
    • @Mymac 我只是使用消息的 ID,userId: meformat: full,您可以在 API Explorer 中尝试。如果只是在同一页面上使用与 Java 示例相同的参数,则会得到相同的响应:Message message = service.users().messages().get(userId, messageId).execute();
    • 我已验证响应消息,似乎数据属于内联附件。您能否交叉检查包含内联附件(ex-images)的消息
    猜你喜欢
    • 2020-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    • 2023-03-18
    • 2016-12-08
    • 2016-09-21
    • 2017-04-14
    相关资源
    最近更新 更多