我正在构建一个应用程序,在该应用程序中,我使用Gmail API从Gmail获取电子邮件。
在电子邮件中,有一个图像直接嵌入到电子邮件正文中(内联图像而不是附件)。我可以提取文本/HTML部分,它可以在浏览器上正确显示,但在内联图像的情况下,它会显示损坏的图像。
在图像标签中显示为

<img src=\"cid:ii_jfi5vwc30_1628627122d12121\" width=\"454\" height=\"255\">

它在SRC中提供内容ID而不是图像URL。有人知道我应该如何在浏览器页面中使用cid显示内联图像吗?如何从cid获取base64格式的图像?

最佳答案

cid:用作引用附加到多部分电子邮件的图像的方法,因此图像是电子邮件上的附件,而不是嵌入到电子邮件中。这意味着要显示图像,必须查找包含引用图像的附件。
您的cidurl对应于如下所示的Content-ID MIME header

Content-ID: <ii_jfi5vwc30_1628627122d12121>

Gmail API应该给您一个如下的响应:
{
  "parts": [
    // ... other parts ...
    {
      "partId": "1",
      "mimeType": "image/png",
      "filename": "",
      "headers": [
        {
          "name": "Content-ID",
          "value": "<ii_jfi5vwc30_1628627122d12121>"
        },
        {
          "name": "Content-Type",
          "value": "image/png"
        },
        {
          "name": "Content-Transfer-Encoding",
          "value": "base64"
        }
      ],
      "body": {
        "size": 9999,
        "data": "R0lGODlhGAGgAPEAAP...(the original base64 encoded image)",
      }
    }
    // ... other parts ...
  ]
  // ... rest of response ...
}

为了显示图像,您需要返回响应对象并找到headernameContent-IDvalueii_jfi5vwc30_1628627122d12121,然后分析对象以读取其body.data,这是您想要的base64编码图像。
如果回复不包含此部分,则表示原始电子邮件格式不正确,或者相关联的图像未以某种方式正确附加到电子邮件,那么您就走运了,无法呈现原始图像。

10-05 21:02
查看更多