InvalidInternetMessageHeaderCollection при добавлении itemAttachment к существующему событию - PullRequest
0 голосов
/ 05 июня 2019

Я разрабатываю программное обеспечение для резервного копирования и восстановления календаря Office365 с помощью API-интерфейса Graph.

Я обнаружил проблему, заключающуюся в том, что API-интерфейс Graph не может добавить itemAttachment, который является электронной почтой, к существующему событию, и яполучить HTTP 400 - InvalidInternetMessageHeaderCollection ошибка.

Вот способ воспроизвести эту проблему.

Шаг 1. Создайте письмо и введите несколько слов в содержимое письма.

Шаг 2. Следуйте этому документу для использования EWS API - GetItem - для получения MimeContent почты.

Шаг 3. Выполните этот документ для использования EWS API - CreateAttachment - для создания itemAttachment с MimeContent, полученным на шаге 2.

Шаг 4. Используйте Graph API , чтобы получить объект вложения объекта ItemAttachment, который мысоздал.

GET /users/{id}/events/{id}/attachments/{id}/?$expand=microsoft.graph.itemattachment/item

{
   "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('id')/events('id')/attachments/$entity",
   "@odata.type": "#microsoft.graph.itemAttachment",
   "id": "XXX",
   "lastModifiedDateTime": "2019-06-05T11:49:31Z",
   "name": "mail",
   "contentType": null,
   "size": 3570,
   "isInline": false,
   "item@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('id')/events('id')/attachments('id')/microsoft.graph.itemAttachment/microsoft.graph.itemAttachment/item/$entity",
   "item": {
      "@odata.type": "#microsoft.graph.message",
      "id": "",
      "createdDateTime": "2019-06-05T11:49:31Z",
      "lastModifiedDateTime": "2019-06-05T11:49:31Z",
      "sentDateTime": "2019-06-05T11:47:26Z",
      "hasAttachments": false,
      "internetMessageId": "<HK0PR06MB2260447A67A4FBE3BD048C51F9160@HK0PR06MB2260.apcprd06.prod.outlook.com>",
      "subject": "mail",
      "bodyPreview": "123",
      "conversationId": "AAQkADU2MzY5ODJlLWI2YjgtNDM5YS1iMWQzLTkxNWFlOTk3MjA3MAAQAOg5eAr7GjJIhMOEzhj7n1E=",
      "isReadReceiptRequested": false,
      "isRead": true,
      "isDraft": true,
      "webLink": "https://outlook.office365.com/owa/?AttachmentItemID=AAMkADU2MzY5ODJlLWI2YjgtNDM5YS1iMWQzLTkxNWFlOTk3MjA3MABGAAAAAAAZitkJ2449ToBFAe4BGzZIBwCNDDda%2FKAGR78R656X%2FL48AAAAAAENAACNDDda%2FKAGR78R656X%2FL48AALV0JzEAAABEgAQAJDlO81oGPhBn3FaHTcAuQg%3D&exvsurl=1&viewmodel=ItemAttachment",
      "internetMessageHeaders": [
         {
            "name": "Subject",
            "value": "mail"
         },
         {
            "name": "Thread-Topic",
            "value": "mail"
         },
         {
            "name": "Thread-Index",
            "value": "AQHVG5Ry6Dl4CvsaMkiEw4TOGPufUQ=="
         },
         {
            "name": "Date",
            "value": "Wed, 5 Jun 2019 11:47:26 +0000"
         },
         {
            "name": "Message-ID",
            "value": "<HK0PR06MB2260447A67A4FBE3BD048C51F9160@HK0PR06MB2260.apcprd06.prod.outlook.com>"
         },
         {
            "name": "Content-Language",
            "value": "en-US"
         },
         {
            "name": "Content-Type",
            "value": "multipart/alternative"
         },
         {
            "name": "MIME-Version",
            "value": "1.0"
         }
      ],
      "body": {
         "contentType": "html",
         "content": "<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n<style type=\"text/css\" style=\"display:none;\"><!-- P {margin-top:0;margin-bottom:0;} --></style>\r\n</head>\r\n<body dir=\"ltr\">\r\n<div id=\"divtagdefaultwrapper\" style=\"font-size:12pt;color:#000000;font-family:Calibri,Helvetica,sans-serif;\" dir=\"ltr\">\r\n<p style=\"margin-top:0;margin-bottom:0\">123<br>\r\n</p>\r\n</div>\r\n</body>\r\n</html>\r\n"
      },
      "flag": {
         "flagStatus": "notFlagged"
      }
   }
}

Шаг 5. Используйте Graph API , чтобы добавить вложение элемента в другое событие, но сервер ответит об ошибке.

POST /users/{id}/events/{id}/attachments, а тело запроса - это весь объект вложения, полученный с шага 4.

{
   "error": {
      "code": "InvalidInternetMessageHeaderCollection",
      "message": "Maximum number of headers in one message should be less than or equal to 5.",
      "innerError": {
         "request-id": "2a915134-2a58-4298-9591-3756ff161b25",
         "date": "2019-06-04T09:13:30"
      }
   }
}

Обновлено:

Независимо от того, есть ли в письме вложения или нет,серверу всегда не удается создать этот itemAttachment и выдает одно и то же сообщение об ошибке.


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...