Microsoft.Graph 发送带有内联图像的电子邮件,不显示内联图像而是作为附件

问题描述 投票:0回答:1

我们的应用程序发送电子邮件进行确认等。以前,它使用 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中打开邮件中的附件

为什么图像没有出现在体内?

c# json email-client
1个回答
1
投票

我想通了。

显然,您必须将“ContentId”添加到附件的 AdditionalData 字典中。

因此对于用于显示内联图像的附件,addtionaldata 字典应该如下所示:

"AdditionalData": {
            "ContentBytes": "the-base64-bytes-string",
            "ContentId": "the-id-used-in-the-img-src"
        }

然后 oulook 就可以显示图像了。

© www.soinside.com 2019 - 2024. All rights reserved.