当前位置: 首页 > 知识库问答 >
问题:

如何通过EWS在Exchange 2013中从一个公用文件夹邮箱获取公用文件夹

宋新知
2023-03-14

我可以使用以下powershell命令检索存储在特定公用文件夹邮箱中的公用文件夹:

Get-PublicFolder –GetChildren | Where { $ _.ContentMailboxName –eq “PFMailbox1” }

(但我不想使用远程PowerShell)

我不能使用EWS来完成这件事。

我的第一个想法是获取所有公用文件夹,然后根据公用文件夹邮箱对它们进行排序。

但可能没有包含公用文件夹邮箱名称(类似于ContentMailboxName powershell属性)的扩展MAPI属性。

所以我尝试了这样的方法:具有委托访问权限的EWS

var mailbox = new Mailbox("PFMailbox1@MyDomain.local"); 
// PFMailbox1 is Public Folder mailbox with Pubclic folders
FolderId folderId = new FolderId(WellKnownFolderName.MsgFolderRoot, mailbox);
Folder rootfolder = Folder.Bind(service, folderId);
service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, impUser);
// impUser=PFMailbox1@MyDomain.local
Folder rootfolder = Folder.Bind(service, WellKnownFolderName.MsgFolderRoot );

我得到错误:

“帐户没有模拟请求的用户的权限。”

用户Administrator和PFMailbox1的所有邮箱权限均设置为完全访问。我正在使用最新的Exchange2013 DLL。

编辑1:

第二个问题是如何创建根公用文件夹并将其保存到所需的公用文件夹邮箱?

EWS方法Folder.save(FolderId)只有一个参数,如果我使用FolderId=PublicFolderRoot->所有文件夹都将保存到MasterHierarchy公用文件夹Mailbox(第一次创建的邮箱)中。

我知道的唯一解决方案是使用远程Power Shell为每个公用文件夹邮箱创建第一级(根)文件夹。

New-PublicFolder "Folder1" -Mailbox "PFMailbox1"
New-PublicFolder "Folder2" -Mailbox "PFMailbox2"

然后第二次(第三次,..)文件夹级别I可以使用folder.Save(FolderID)。但是如何使用EWS来实现呢?

共有1个答案

刁茂才
2023-03-14

我没有在委托访问或模拟中尝试这样做,但如果我是公用文件夹的发布编辑器,则可以使用以下代码检索公用文件夹邮箱的直接子文件夹。有一个FolderTraversal值用于指定浅搜索(仅直接子文件夹)或深搜索(整个层次结构),但不能对公用文件夹使用深搜索。

private static void GetFolderHierarchy(int folderViewSize, ExchangeService service)
    {
        FolderView view = new FolderView(folderViewSize);
        view.PropertySet = new PropertySet(BasePropertySet.IdOnly, FolderSchema.DisplayName);     

        // Call FindFolders to retrieve the folder hierarchy, starting with the PublicFoldersRoot folder.
        FindFoldersResults findResults = service.FindFolders(WellKnownFolderName.PublicFoldersRoot, view);

        foreach (Folder folder in findResults.Folders)
        {
             Console.WriteLine("Public folder display name: {0} ", folder.DisplayName);

        }
   }
 类似资料:
  • 我找不到任何使用SOAP API正确列出所有公用文件夹邮箱和公用文件夹的解决方案。我只找到了powershell命令或C#方法。如果有人知道如何获取/列出所有公用文件夹,请提供给我的解决方案。

  • 我有一个像这样的文件夹 应用程序 供应商 引导程序 公开的 文件夹 img 当我从url访问时http://example.com/img/img.png它工作,但当我喜欢访问http://example.com/img/我得到禁止403,我需要的是重定向或显示该页面没有找到我的。htaccess看起来像这样。 选项-多视图选项-索引重写引擎打开

  • 我在公用文件夹中有一个javascript文件,我想将该文件导入src/components文件夹中的组件。 但我不能在我的组件中做这样的事情: 因为我得到了以下错误: 找不到模块:您试图导入项目src/目录之外的.../.../public/recorder。不支持src/之外的相对导入。您可以将其移动到src/中,也可以从项目的node_modules/中添加符号链接。 据我所知,它不允许在

  • 我正在使用EWS和java从Outlook邮箱检索电子邮件。

  • 问题内容: 我需要从文件夹中读取所有“ .txt”文件(用户需要选择此文件夹)。 请告知如何做? 问题答案: 您可以使用类,这是非常简单的用法 只需创建一个实例,您想要如何覆盖接受方法

  • 我正在编写一个程序,将联系人从ERP系统导入到Outlook。不同的电子邮件会收到不同的来自ERP的联系人列表。这里的想法是,在每封电子邮件中,我都有一个公共联系人文件夹,可以被技术用户访问。技术用户可以将联系人写入此文件夹。下面是搜索文件夹的代码: 服务对象的创建如下: 代码适用于Office2010,我从该文件夹获取Id,连接到它并保存联系人。迁移到Office365后,我们找不到公用文件夹。