Mailkit. Каков наилучший способ переместить существующую папку со всеми ее подпапками и сообщениями в другую? - PullRequest
1 голос
/ 15 января 2020

Я пытаюсь переместить существующую папку в другую, используя библиотеку MailKit. В настоящее время я делаю это вручную, заново создавая ту же структуру папок в новом месте, но это не кажется хорошим решением, поскольку мне также нужно отслеживать все подписки, атрибуты подпапок и т. Д. c. Мне интересно, есть ли способ облегчить жизнь?

Спасибо

Вот пример кода:

private async Task MoveFolderToRecursively(IMailFolder sourceFolder, IMailFolder destinationFolder)
        {
            await sourceFolder.OpenAsync(FolderAccess.ReadWrite);

            var messages = await sourceFolder.FetchAsync(0, -1, MessageSummaryItems.UniqueId);
            var uids = messages.Select(x => x.UniqueId).ToList();

            await sourceFolder.MoveToAsync(uids, destinationFolder);

            if (sourceFolder.IsSubscribed)
            {
                await destinationFolder.SubscribeAsync();
            }

            await sourceFolder.CloseAsync(true);

            if (sourceFolder.Attributes.HasFlag(FolderAttributes.HasChildren))
            {
                var subfolders = sourceFolder.GetSubfolders();
                foreach (var subfolder in subfolders)
                {
                    var destinationSubfolder = destinationFolder.Create(subfolder.Name, true);
                    await MoveFolderToRecursively(subfolder, destinationSubfolder);
                }
            }

            await sourceFolder.DeleteAsync();
        }

1 Ответ

0 голосов
/ 15 января 2020

Просто переименуйте папку, а не клонируйте ее.

...