我需要一种方法来确定 Outlook 文件夹是否是公共的。我怀疑有一些属性 Microsoft.Office.Interop.Outlook 可以让我这样做,但我找不到它。
2 回答
如果您可以访问与IMsgStore
相关文件夹关联的界面(抱歉,不知道如何使用纯 C# - 我推荐Redemption),您可以查询该PR_MDB_PROVIDER
属性以查看它是否为pbExchangeProviderPublicGuid
.
根据您对 KG 答案的评论进行更新:
如果您想过滤掉主邮箱中的联系人,只需将它们StoreID
与您的默认收件箱文件夹中的联系人进行比较 - 或者干脆不要一开始就枚举来自任何其他商店的文件夹。
您需要的是 Exchange Web 服务,特别是 FindFolder 操作(有关 MSDN 的一些说明,请参见此处或此处)。
尽管从外观上看,没有特定的属性可以识别文件夹是否为“公共”,就像@RedDeckWins 提到的那样。
更新
如果您没有特别要求为此使用托管 C#,则可以使用 Powershell Exchange Cmdlet(在此处查看)。具体来说,此命令可能会有所帮助:
Get-PublicFolder -Recurse | Format-List Name
Powershell 本身很容易使用,但也可以从 C# 调用,如果运行您的代码的服务器安装了它(对于大多数现代机器来说,应该安装它)。
如果您仅限于 C#,请查看这个 StackOverflow 问题:List of email address to public folder in exchange