没有附件时如何从 Microsoft Graph 检索嵌入图像数据?

How to retrieve embed image data from Microsoft Graph when there are no attachments?

我正在使用 Microsoft Graph 从邮箱中提取电子邮件数据。当我获取内容时,我发现嵌入的图像内容如下:

<img id="_x0000_i1029" 
     width="1366" 
     height="672" 
     data-outlook-trace="F:1|T:1" 
     src="cid:image005.png@01D4DE3D.90A3C410" 
     style="width:14.2291in; height:7.0in">

当 属性 hasAttachments 为真时,我寻找匹配并替换内容的图像,效果很好。问题是我在 hasAttachments 为 false 的消息中看到了这样的嵌入式图像标签。

图片数据哪里找 Graph 说消息没有附件,明明有内嵌图片?

请注意,在 Outlook 网页版中呈现的图像带有如下标记:

<img data-imagetype="AttachmentByCid"        
     originalsrc="cid:image005.png@01D4DE3D.90A3C410" 
     data-custom="AAMkADY1YjgxM2Y4LTE5NTUtNDBjMy1iZDY0LWIzN..." 
     naturalheight="672" 
     naturalwidth="1366" 
     src="https://attachments.office.net/owa/mailboc@mydomain.onmicrosoft.com/service.svc/s/GetAttachmentThumbnail?id=AAMkADY1YjgxM2Y4LTE5NTUtNDBjMy1iZDY0LWIzN...&amp;thumbnailType=2&amp;owa=outlook.office365.com&amp;scriptVer=2019031102.10&amp;X-OWA-CANARY=kKWSUkiFW0WjlPXXXXXXXXX.&amp;token=eyJhbGciOiJSU...&amp;animation=true" 
     id="_x0000_i1029" 
     data-outlook-trace="F:1|T:1" 
     style="width: 1024.49pt; height: 504pt; cursor: pointer;" 
     crossorigin="use-credentials" >

使用 Microsoft Graph API 您可以获得邮件的所有附件:

GET https://graph.microsoft.com/v1.0/me/messages/{id}/attachments

GET https://graph.microsoft.com/v1.0/users/{id | userPrincipalName}/messages/{id}/attachments

当您获得所有附件后,您可以检查 属性 isInline 以查找嵌入的图像。

即使电子邮件 属性 hasAttachments 设置为 false,您也可以获得附件,因为 属性 与非内嵌附件相关。