Я пытаюсь переместить существующую папку в другую, используя библиотеку 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();
}