2010-12-14 56 views
3

我需要一种方法来确定Outlook文件夹是否公开。我怀疑有一些财产Microsoft.Office.Interop.Outlook,将允许我这样做,但我找不到它。如何确定Outlook文件夹是否公开?

+0

Outlook文件夹似乎没有“公共”属性,但它们具有权限。那是你的追求? – 2010-12-14 21:48:41

+2

公用文件夹是交换事物。不确定Outlook OM是否允许您访问它。我确信EWS(Exchange Web服务)允许访问公共文件夹。 – RedDeckWins 2010-12-16 07:28:40

回答

0

你想要什么是Exchange Web服务,特别是FindFolder操作(有关某些MSDN描述,请参阅herehere)。

虽然从它的外观来看,没有识别文件夹是否为“公共”的特定属性,例如@RedDeckWins提及。

UPDATE

如果您不是专门使用托管C#为此所需,您可以使用PowerShell的交易所的cmdlet(检查了这一点here)。具体而言,该命令可能会有所帮助:

Get-PublicFolder -Recurse | Format-List Name 

PowerShell是很容易通过自身使用,但它也可以从C#调用,如果有它安装在你的代码上运行的服务器(对于大多数现代盒子,应该)。

如果仅限于C#,看看这个StackOverflow的问题:List of email address to public folders in exchange

+0

我想列举文件夹并拉出联系人,但只是本地的,而不是交换服务器上的联系人。看起来很奇怪,我无法找到一个很好的方法来确定当我通过它们枚举时,交换服务器上的联系人是本地还是远程的。 – 2011-02-10 16:47:39

+0

查看我的更新。你仅限于C#,还是可以使用Powershell? Exchange中包含的工具可能会对此有所帮助。 – karlgrz 2011-02-10 17:02:58

+0

@Greg:查看我的答案的更新:如果您只想要主邮箱内的联系人文件夹(*不是公用的邮箱),只需比较其“StoreID”或将搜索限制在本地商店即可。 – 2011-06-06 11:32:06

1

如果你能在与文件夹中的问题相关的IMsgStore接口得到(对不起,不知道该怎么做,与纯粹的C# - 我推荐Redemption)你可以查询PR_MDB_PROVIDER属性来查看它是否为pbExchangeProviderPublicGuid。基于对KG的回答您的评论

更新

如果要过滤掉你的主邮箱里面的联系人,只需用您的默认收件箱文件夹的比较他们StoreID - 或者干脆别列举来自任何其他商店的文件夹。

相关问题