Mailkit。将现有文件夹及其所有子文件夹和消息移动到另一个文件夹的最佳方法是什么?

问题描述 投票:1回答:1

我正在尝试使用MailKit库将现有文件夹移动到另一个文件夹。目前,我正在通过在新位置重新创建相同的文件夹结构来手动执行此操作,但这似乎不是一个好的解决方案,因为我还需要跟踪所有订阅,子文件夹属性等。我想知道是否有任何方法使生活更轻松?

谢谢

这里是示例代码:

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();
        }
c# .net mailkit
1个回答
0
投票

只需重命名文件夹,而不是克隆它。

© www.soinside.com 2019 - 2024. All rights reserved.