使用graph api发送邮件时获取messageId

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

根据设计发送电子邮件似乎只提供状态代码而没有更多信息。

如果成功,该方法返回 202 Accepted 响应码。它不会在响应正文中返回任何内容。

我该如何获取我发送邮件的messageId?我似乎无法在网上找到该信息。

或者有什么方法可以在发送前设置吗?

或者我是否需要保存草稿并通过对图形 api 的额外调用来发送它,从而导致两次调用而不是一次?

这是我到目前为止得到的:

        var options = new TokenCredentialOptions { AuthorityHost = AzureAuthorityHosts.AzurePublicCloud };
        var credentials = new UsernamePasswordCredential(configuration.EmailAddress, configuration.Password, 
            configuration.TenantId, configuration.ClientId, options);

        var graphClient = new GraphServiceClient(credentials, new[] { "https://graph.microsoft.com/.default" });

        var body = new Microsoft.Graph.Me.SendMail.SendMailPostRequestBody();

        //configuration of the mail goes here

        await graphClient.Me.SendMail.PostAsync(body);

还知道如何获取实际的发送消息吗?来自 Mimekit,我可以轻松地将其转换为 MemoryStream。

c# microsoft-graph-api sendmail messageid
1个回答
0
投票

消息发送是异步的,这意味着 API 不会返回消息的 Id,将消息保存在邮箱发送项目中也是选项,这是提交过程的一部分。

或者我是否需要保存草稿并通过对图形 api 的额外调用来发送它,从而导致两次调用而不是一次?

如果您使用 ImmutableId 的 https://learn.microsoft.com/en-us/graph/outlook-immutable-id 然后确保将项目保存到 SendItems 文件夹中,您将能够访问它(将其导出模仿,如果这就是你想做的事等等)。

我该如何获取我发送邮件的messageId?我看不出来 在线查找该信息。

或者有什么方法可以在发送前设置吗?

您可以通过在发送时设置 PidTagInternetMessageId 属性来设置 InternetMessageId,例如

{
    "message": {
        "subject": "Meet for lunch?",
        "body": {
            "contentType": "Text",
            "content": "The new cafeteria is open."
        },
        "toRecipients": [
            {
                "emailAddress": {
                    "address": "[email protected]"
                }
            }
        ],
        "singleValueExtendedProperties": [
            {
                "id": "String 0x1035",
                "value": "[email protected]"
            }
        ]
    }
}

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