Microsoft Graph Rest API Добавление вложения в сообщение электронной почты с помощью C# ASP.NET MVC

Я пытаюсь использовать 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-адрес, который я отправляю, а также содержимое объекта, который я пытаюсь отправить. Я уверен, что упускаю что-то очевидное, может быть, как-то связано с кодированием данных bytes[] или установкой типа контента в заголовке где-то?

Любая помощь приветствуется, вот ссылка на функцию API, которую я использую: http://graph.microsoft.io/en-us/docs/api-reference/v1.0/api/message_post_attachments


person Matt F    schedule 07.03.2016    source источник


Ответы (1)


Как показано в документации, убедитесь, что полезная нагрузка json содержит свойство «@odata.type» со значением «#microsoft.graph.fileAttachment». Ниже полезная нагрузка, указанная в вопросе с изменением (выделено жирным шрифтом).

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

person Sriram Dhanasekaran-MSFT    schedule 08.03.2016
comment
Спасибо, я думал, что пробовал это, но я пропустил знак @ в начале «odata.type». После установки работает нормально. - person Matt F; 08.03.2016