如何查找收件箱中是否存在文件夹,如果不存在则创建

7

我刚开始在Exchange 2010上使用Exchange Webservices 1.1。我找不到如何查找特定文件夹并在不存在时创建它的示例。该怎么做?

1个回答

15

经过几天的摸索和在网上的研究,我终于搞清楚了:

FolderView fv = new FolderView(10);

var findFoldersResults = service.FindFolders(
    WellKnownFolderName.Inbox,
    new SearchFilter.SearchFilterCollection(
        LogicalOperator.Or,
        new SearchFilter.ContainsSubstring(FolderSchema.DisplayName, "ERROR"), new SearchFilter.ContainsSubstring(FolderSchema.DisplayName, "ARCHIVE")),
    fv);

foreach (var folder in findFoldersResults)
{
    if (folder is Folder)
    {
        if (folder.DisplayName.ToUpper() == "ARCHIVE")
        {
            archiveFolderID = folder.Id;
        }
        else if (folder.DisplayName.ToUpper() == "ERROR")
        {
            errorFolderID = folder.Id;
        }

    }
}
//if archive folder not found create and assign the variable to the folderID
if (archiveFolderID == null)
{
    Folder folder = new Folder(service);
    folder.DisplayName = "ARCHIVE";
    folder.Save(WellKnownFolderName.Inbox);
    archiveFolderID = folder.Id;
}
//if error folder not found create and assign the variable to the folderID
if (errorFolderID == null)
{
    Folder folder = new Folder(service);
    folder.DisplayName = "ERROR";
    folder.Save(WellKnownFolderName.Inbox);
    errorFolderID = folder.Id;
}

3
你也许可以使用SearchFilter.IsEqualTo,因为ContainsSubstring会返回像“NoERRORS”或“ERRORSNotAllowed”这样的文件夹名称,而IsEqualTo使用==运算符,所以基本上你不需要编写自己的'if(folder.DisplayName.ToUpper() == "ERROR")'。 - grapkulec
@greektreat 我们如何为子文件夹做同样的事情? - Aaditya R Krishnan
@Ark,我认为当您使用folder.Save(WellKnownFolderName.Inbox)时,WellKnownFolderName.Inbox的值是folderID,因此如果您获取要作为父文件夹的文件夹ID,则可能会起作用。自2011年以来,我就没有碰过这个了。看一下这篇文章https://dev59.com/ao7ea4cB1Zd3GeqPIPc5 - greektreat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接