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

时间:2016-03-07 13:53:24

标签: c# asp.net-mvc email email-attachments microsoft-graph

我正在尝试使用Microsoft Graph发送带附件的电子邮件,但我只是回复了“内部服务器错误”的响应。我尝试了几种不同的东西,但是没有快乐,所以希望有人可以帮忙!

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的对象的内容。我确信我遗漏了一些明显的东西,可能是以某种方式编码bytes []数据或者在某个地方设置标题中的内容类型?

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

1 个答案:

答案 0 :(得分:1)

documentation所示,请确保json有效负载包含" @ odata.type"值为" #microsoft.graph.fileAttachment"。在问题中引用的有效负载下方(以粗体显示)。

{的" @ odata.type":"#microsoft.graph.fileAttachment" 下,"名称":"的test.txt"" ContentBytes":" VGVzdA0K""的ContentType":" text / plain的"}