Я разрабатываю программное обеспечение для резервного копирования и восстановления календаря 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 и выдает одно и то же сообщение об ошибке.