#c# #microsoft-graph-api
#c# #microsoft-graph-api
Вопрос:
Я написал программу для архивирования электронных писем из Outlook с использованием Microsoft Graph. После архивирования сообщения электронной почты программа удаляет вложения электронной почты. Таким образом, иногда возникает следующее исключение:
Код состояния: выполнена предварительная настройка Microsoft.График.Исключение ServiceException: Code: сообщение об ошибке ErrorIrresolvableConflict: не удалось выполнить операцию отправки или обновления, поскольку ключ изменения, переданный в запросе, не соответствует текущему ключу изменения для элемента., Не удается сохранить изменения, внесенные в элемент, для сохранения.SaveStatus: неразрешимые конфликты свойств:
Запрос клиента: 97513ec2-a8bf-4ab4-a492-0f5e0ca0bf32
C # код:
public void DeleteAttachments(List<string> attachmentIds)
{
foreach (var attachmentId in attachmentIds)
{
Task.Run(() => DeleteAttachmentAsync(attachmentId)).GetAwaiter().GetResult();
}
}
private async Task DeleteAttachmentAsync(string id)
{
await GraphServiceClient
.Users[CurrentUser.Id]
.MailFolders[CurrentFolder.Id]
.Messages[CurrentMessage.Id]
.Attachments[id]
.Request()
.DeleteAsync();
}
Есть ли проблема с этим кодом?
Есть ли возможность удалить все вложения электронного письма одним пакетом?
Мои наблюдения, когда я тестировал приведенный выше код: при тестировании с десятками электронных писем с вложениями иногда возникает исключение, когда электронное письмо содержит более одного вложения, но удаление нескольких вложений также может быть успешным.
Комментарии:
1. Согласно официальному документу , я боюсь, что вы можете выполнить рекурсию, чтобы получить все электронные письма и удалить вложения одно за другим, потому что нет метода пакетного удаления. i.stack.imgur.com/CcbZR.png