Microsoft Graph Rest API 使用 c# ASP.NET MVC 添加附件到电子邮件

Microsoft Graph Rest API Add attachment to email using c# ASP.NET MVC

我正在尝试使用 Microsoft Graph 发送带有附件的电子邮件,但我只收到 'Internal Server Error' 的回复。我尝试了几种不同的方法,但没有任何乐趣,所以希望这里有人可以提供帮助!

API 声明您可以创建和发送带附件的电子邮件,但在我尝试先创建电子邮件作为草稿,然后将附件添加到其中之前遇到了问题,然后终于发出来了草稿创建很好,没有附件也可以发送。这是我用来将文件附加到电子邮件的代码部分:

            // Now add the attachments
        using (var client = new HttpClient())
        {
            // URL = https://graph.microsoft.com/v1.0/me/messages/{id}/attachments
            string AddAttachmentsUrl = GraphSettings.AddAttachmentsToMessageUrl;
            AddAttachmentsUrl = AddAttachmentsUrl.Replace("{id}", newMessageId);

            using (var request = new HttpRequestMessage(HttpMethod.Post, AddAttachmentsUrl))
            {
                request.Headers.Accept.Add(Json);
                request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);

                string serializedData = JsonConvert.SerializeObject(current);
                // serializedData = {\"Name\":\"Test.txt\",\"ContentBytes\":\"VGVzdA0K\",\"ContentType\":\"text/plain\"}
                request.Content = new StringContent(serializedData, Encoding.UTF8, "application/json");

                using (HttpResponseMessage response = await client.SendAsync(request))
                {
                    if (!response.IsSuccessStatusCode)
                    {
                        sendMessageResponse.Status = SendMessageStatusEnum.Fail;
                        sendMessageResponse.StatusMessage = response.ReasonPhrase;
                        return sendMessageResponse;
                    }
                }
            }
        }

我在其中添加了一些评论,因此您可以看到我正在发布的 URL 以及我正在尝试 POST 的 object 的内容。我确信我遗漏了一些明显的东西,可能与以某种方式对 bytes[] 数据进行编码或在某处 header 中设置内容类型有关?

非常感谢任何帮助,这是我正在使用的 API 函数的 link:http://graph.microsoft.io/en-us/docs/api-reference/v1.0/api/message_post_attachments

documentation所示,请确保json有效负载包含“@odata.type”属性,值为“#microsoft.graph.fileAttachment” .在问题中引用的负载下方进行了更改(粗体)。

{"@odata.type":"#microsoft.graph.fileAttachment","Name":"Test.txt","ContentBytes":"VGVzdA0K","ContentType":"text/plain"}