【发布时间】:2019-01-09 15:31:04
【问题描述】:
我正在尝试将邮件移动到另一个文件夹,但我找不到检查目标文件夹是否存在的简单方法,我假设给定的文件夹路径是根文件夹,我尝试这样做:
public void MoveMessages(Config accountInfo, List<int> uids, string
sourceFolderName, string targetFolderName)
{
ValidateAccountInfoConfiguration(accountInfo);
using (var client = new ImapClient())
{
Authenticate(accountInfo, client);
var sourceFolder = GetSourceFolder(sourceFolderName, client);
sourceFolder.Open(FolderAccess.ReadWrite);
var topLevelFolder = client.GetFolder(client.PersonalNamespaces[0]);
var topFolders = topLevelFolder.GetSubfolders();
var targetFolder = topFolders.FirstOrDefault(folder => folder.Name == targetFolderName);
if (targetFolder == null)
targetFolder = topLevelFolder.Create(targetFolderName, true);
var uidsToMove = GetUniqueIds(sourceFolder, SearchQuery.Seen).Where(uid => uids.Any(uidToMove => uidToMove == uid.Id)).ToList();
sourceFolder.MoveTo(uidsToMove, targetFolder);
sourceFolder.Expunge(uidsToMove);
}
}
在文档中,IMailFolder 接口包含 Exists 属性,但是当我尝试使用 IMailFolder.GetFolder("pathToFolder") 获取文件夹时,如果该文件夹不存在,则会引发 folderNotFound 异常,因此我无法理解使用Exists 财产的情况下,我错过了什么?或者我当前的实现是实现获取目标文件夹的正确方法?
【问题讨论】: