我们的应用程序发送电子邮件进行确认等。以前,它使用 SMTP。我们设置了带有链接资源的邮件,它可以很好地显示内联图像。
现在一个客户切换到 Azure,所以我添加了代码以通过 Azure 发送电子邮件。邮件已发送和接收,但内联图像未显示在正文中。它作为附件存在,我不想看到它。
这是我的
SendMailPostRequestBody
(为了阅读目的连载):
{
"AdditionalData": {},
"BackingStore": {
"ReturnOnlyChangedValues": false,
"InitializationCompleted": true
},
"Message": {
"Attachments": [{
"ContentType": "text/plain",
"IsInline": false,
"LastModifiedDateTime": null,
"Name": "file1.PDF",
"Size": null,
"AdditionalData": {
"ContentBytes": {
"ValueKind": 3
}
},
"BackingStore": {
"ReturnOnlyChangedValues": false,
"InitializationCompleted": true
},
"Id": "file1.PDF",
"OdataType": "#microsoft.graph.fileAttachment"
}, {
"ContentType": "text/plain",
"IsInline": false,
"LastModifiedDateTime": null,
"Name": "file2.pdf",
"Size": null,
"AdditionalData": {
"ContentBytes": {
"ValueKind": 3
}
},
"BackingStore": {
"ReturnOnlyChangedValues": false,
"InitializationCompleted": true
},
"Id": "file2.pdf",
"OdataType": "#microsoft.graph.fileAttachment"
}, {
"ContentType": "image/jpeg",
"IsInline": true,
"LastModifiedDateTime": null,
"Name": "Logo.jpg",
"Size": null,
"AdditionalData": {
"ContentBytes": {
"ValueKind": 3
}
},
"BackingStore": {
"ReturnOnlyChangedValues": false,
"InitializationCompleted": true
},
"Id": "Logojpg",
"OdataType": "#microsoft.graph.fileAttachment"
}
],
"BccRecipients": null,
"Body": {
"AdditionalData": {},
"BackingStore": {
"ReturnOnlyChangedValues": false,
"InitializationCompleted": true
},
"Content": "<html>\t<body>\t\t<table cellspacing=\"0\" cellpadding=\"0\" class=\"mailimage mailimage1\"><tbody><tr><td><img src=\"cid:Logojpg\" alt=\"Logojpg\" ></td></tr></tbody></table></body></html> ",
"ContentType": 1,
"OdataType": null
},
"BodyPreview": null,
"CcRecipients": [],
"ConversationId": null,
"ConversationIndex": null,
"Extensions": null,
"Flag": null,
"From": {
"AdditionalData": {},
"BackingStore": {
"ReturnOnlyChangedValues": false,
"InitializationCompleted": true
},
"EmailAddress": {
"AdditionalData": {},
"Address": "[email protected]",
"BackingStore": {
"ReturnOnlyChangedValues": false,
"InitializationCompleted": true
},
"Name": null,
"OdataType": null
},
"OdataType": null
},
"HasAttachments": null,
"Importance": null,
"InferenceClassification": null,
"InternetMessageHeaders": null,
"InternetMessageId": null,
"IsDeliveryReceiptRequested": null,
"IsDraft": null,
"IsRead": null,
"IsReadReceiptRequested": null,
"MultiValueExtendedProperties": null,
"ParentFolderId": null,
"ReceivedDateTime": null,
"ReplyTo": null,
"Sender": {
"AdditionalData": {},
"BackingStore": {
"ReturnOnlyChangedValues": false,
"InitializationCompleted": true
},
"EmailAddress": {
"AdditionalData": {},
"Address": "[email protected]",
"BackingStore": {
"ReturnOnlyChangedValues": false,
"InitializationCompleted": true
},
"Name": null,
"OdataType": null
},
"OdataType": null
},
"SentDateTime": null,
"SingleValueExtendedProperties": null,
"Subject": "refnr 00412/16818 *** DEMO ***",
"ToRecipients": [{
"AdditionalData": {},
"BackingStore": {
"ReturnOnlyChangedValues": false,
"InitializationCompleted": true
},
"EmailAddress": {
"AdditionalData": {},
"Address": "[email protected]",
"BackingStore": {
"ReturnOnlyChangedValues": false,
"InitializationCompleted": true
},
"Name": null,
"OdataType": null
},
"OdataType": null
}
],
"UniqueBody": null,
"WebLink": null,
"Categories": null,
"ChangeKey": null,
"CreatedDateTime": null,
"LastModifiedDateTime": null,
"AdditionalData": {},
"BackingStore": {
"ReturnOnlyChangedValues": false,
"InitializationCompleted": true
},
"Id": null,
"OdataType": "#microsoft.graph.message"
},
"SaveToSentItems": false
}
我确实收到了电子邮件,它有 3 个附件。其中之一是图像。 我期待这个在身体内联显示时不会作为附件可见。
contentBytes
没有显示出来,但是里面有一个base64字符串。
我可以在outlook中打开邮件中的附件
为什么图像没有出现在体内?
我想通了。
显然,您必须将“ContentId”添加到附件的 AdditionalData 字典中。
因此对于用于显示内联图像的附件,addtionaldata 字典应该如下所示:
"AdditionalData": {
"ContentBytes": "the-base64-bytes-string",
"ContentId": "the-id-used-in-the-img-src"
}
然后 oulook 就可以显示图像了。