我正在构建一个应用程序,在该应用程序中,我使用Gmail API从Gmail获取电子邮件。
在电子邮件中,有一个图像直接嵌入到电子邮件正文中(内联图像而不是附件)。我可以提取文本/HTML部分,它可以在浏览器上正确显示,但在内联图像的情况下,它会显示损坏的图像。
在图像标签中显示为
<img src=\"cid:ii_jfi5vwc30_1628627122d12121\" width=\"454\" height=\"255\">
它在SRC中提供内容ID而不是图像URL。有人知道我应该如何在浏览器页面中使用cid显示内联图像吗?如何从cid获取base64格式的图像?
最佳答案
cid:
用作引用附加到多部分电子邮件的图像的方法,因此图像是电子邮件上的附件,而不是嵌入到电子邮件中。这意味着要显示图像,必须查找包含引用图像的附件。
您的cid
url对应于如下所示的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 ...
}
为了显示图像,您需要返回响应对象并找到
header
为name
且Content-ID
为value
的ii_jfi5vwc30_1628627122d12121
,然后分析对象以读取其body.data
,这是您想要的base64编码图像。如果回复不包含此部分,则表示原始电子邮件格式不正确,或者相关联的图像未以某种方式正确附加到电子邮件,那么您就走运了,无法呈现原始图像。