Folder.WellKnownFolderName 在 EWS 托管 API 和 Exchange 2013 中为空

Posted

技术标签:

【中文标题】Folder.WellKnownFolderName 在 EWS 托管 API 和 Exchange 2013 中为空【英文标题】:Folder.WellKnownFolderName is null in EWS Managed API and Exchange 2013 【发布时间】:2016-10-13 16:05:45 【问题描述】:

将 EWS 托管 API 与 Office 365 结合使用(ExchangeVersion.Exchange2013_SP1 配置文件)。为父文件夹调用 Folder.FindFolders 时,我将所有返回的 Folder 对象(包括收件箱等知名文件夹)的 Folder.WellKnownFolderName 值设为 null。 .TotalCount 等其他值也可以。

MSDN 中的 Folder.WellKnownFolderName 文档指出它应该适用于 Exchange2013 及更高版本,我相信 Office 365 符合此标准。

另外,如果我连接到 Exchange 2010 服务器并设置 ExchangeVersion.Exchange_2010 配置文件,.WellKnownFolderName 会引发异常而不是返回 null(这是预期的行为)。因此(据我所知),根据版本,它应该为 Inbox 等知名文件夹抛出异常或返回非空值。

我错过了什么吗?

或者我应该使用其他方式来确定系统文件夹,如收件箱、已发送邮件等?

【问题讨论】:

【参考方案1】:

无论您使用什么版本,默认情况下都不会返回该属性,您必须指定一个属性集并请求服务器为您返回该属性,例如

        FolderView wkfView = new FolderView(1000);
        wkfView.PropertySet = new PropertySet(BasePropertySet.FirstClassProperties);
        wkfView.PropertySet.Add(FolderSchema.WellKnownFolderName);

        service.FindFolders(WellKnownFolderName.MsgFolderRoot, wkfView);

【讨论】:

谢谢。将 FolderSchema.WellKnownFolderName 添加到 PropertySet 会导致“未找到请求的值‘混乱’。” FindFolders 调用期间的 ArgumentException(我使用的是 Office 365 服务器)。有什么线索吗? 对我来说,托管 EWS API 2.2 中似乎存在错误。它不了解 Clutter 特殊邮箱类型并崩溃,而不是默默地不为 Clutter 文件夹设置任何 WellKnownFolderName。目前,这使得在 Office 365 帐户中列出具有知名名称的文件夹无法使用,除非我再次遗漏了某些内容.. 我建议您尝试从 github github.com/OfficeDev/ews-managed-api 编译最新的 ews 托管 api,如果这是一个错误,您应该能够在源代码中修复它(此时 2.2 已经很老了) 是的,我不知道为什么微软不维护 Nuget 包,这让很多人感到悲痛 @GlenScales 是的,这确实是版本问题。

以上是关于Folder.WellKnownFolderName 在 EWS 托管 API 和 Exchange 2013 中为空的主要内容,如果未能解决你的问题,请参考以下文章