1

我使用 Microsoft 的 Exchange Web Services (EWS)。

我的代码是这样的:

ExchangeService server = new ExchangeService(ExchangeVersion.Exchange2007_SP1);

等等

我使用以下代码获取文件夹:

Folder rootfolder = Folder.Bind(server, WellKnownFolderName.MsgFolderRoot);

我在 Exchange Server 上的文件夹结构是:

Inbox
|
|
Folder1
|
|_Sub_Folder1
| |
| |_Sub_Sub_Folder1
|   |
|   |_Sub_Sub_Sub_Folder1
|
|_Sub_Folder2
| |
| |_Sub_Sub_Folder1
|
Folder2
|
|_Sub_Folder1
|
|_Sub_Folder2

当我使用上面介绍的功能时,我只收到主要文件夹:

Inbox,Folder1Folder2.

我也想收到SubFolders...,接下来我想从SubFolders.

例如:

Folder1
|
|_Sub_Folder1
| |
| |_Sub_Sub_Folder1
|   |
|   |_Sub_Sub_Sub_Folder1 -> I want to get these items

你能帮我并提供一些代码的例子吗?我应该使用什么功能?

我尝试使用:

FindFoldersResults findFoldersResults2 = folder.FindFolders(new FolderView(100));

但是,当我收到例如文件夹:Inbox,,并且我阅读时Folder1,我没有收到ex 的数量。-> 我收到 count 。Folder2ChildFolderCountsubfolders20

怎么了?我需要从subfolders.

4

2 回答 2

0

我想你有2个问题。第一个:“如何获取子文件夹”和第二个“为什么 ChildFolderCoun = 0”。

第二个的答案很简单。您必须调用 folder.Load() 并提供一个包含 FolderSchema.ChildFolderCount 属性定义的属性集。

第一个问题的答案是,您必须在递归循环中为每个文件夹调用 FindFolders()。至少我没有找到一个参数或类似的东西告诉 FindFolders-Method 包括所有子文件夹。

希望对你有帮助...

于 2013-03-28T15:04:28.333 回答
0

您正在寻找方法来验证文件夹是否存在。您可以使用以下方法。它递归地搜索每个子文件夹。更改 FolderView 的 Traversal 属性以进行深/浅搜索。

FolderId subfolderInfo;
// Call Method
bool folderExist = isFolderExist(exchange, "Folder1", out subfolderInfo);

//Implementation 

private bool isFolderExist(ExchangeService exchange, string subFolder, out FolderId subfolderInfo)
        {
            try
            {
                FolderView view = new FolderView(100);
                view.PropertySet = new PropertySet(BasePropertySet.IdOnly);
                view.PropertySet.Add(FolderSchema.DisplayName);
                view.Traversal = FolderTraversal.Deep;
                FindFoldersResults findFolderResults = exchange.FindFolders(WellKnownFolderName.Root, view);
                foreach (Folder folder in findFolderResults)
                {
                    if (folder.DisplayName == subFolder)
                    {                        
                        subfolderInfo = folder.Id;
                        return true;
                    }
                }
            }
            catch (Exception Ex)
            {
               ...
            }          
            subfolderInfo = null;
            return false;
        }
于 2017-07-31T19:54:26.340 回答