使用 EWS 访问存储在 Exchange 365 中存档文件夹中的邮件

Posted

技术标签:

【中文标题】使用 EWS 访问存储在 Exchange 365 中存档文件夹中的邮件【英文标题】:Use EWS to access mails stored in Archive folder in Exchange 365 【发布时间】:2016-01-26 15:39:09 【问题描述】:

在 Exchange 365 中,现在可以在您阅读电子邮件后将其存档。

单击“存档”按钮后,电子邮件将从用户收件箱移出到存档文件夹中。

我正在尝试使用 EWS 访问此存档文件夹中的邮件,但没有任何运气。

存档文件夹未出现在 WellKnownFolderName 枚举中。最接近的选项ArchiveRootArchiveMsgFolderRoot 在我尝试访问它们时会产生错误

"The specified folder could not be found in the store."   System.Exception Microsoft.Exchange.WebServices.Data.ServiceResponseException

在 Exchange 管理区域中为此邮箱禁用了“就地存档”功能。

我还尝试通过 EWS AutodiscoverService 服务查找分配给目标用户的任何替代邮箱,但没有返回任何邮箱。

有人可以概述我如何使用 EWS 来阅读此存档文件夹中的邮件吗?

【问题讨论】:

【参考方案1】:

该文件夹是您的屏幕截图只是一个普通的邮箱文件夹(用户创建),因此您需要找到该文件夹​​,例如

        FindFoldersResults aFolders = service.FindFolders(WellKnownFolderName.MsgFolderRoot,new SearchFilter.IsEqualTo(FolderSchema.DisplayName,"Archive"), new FolderView(1));
        if(aFolders.Folders.Count == 1)

        

应该没问题。您在这种情况下使用的实际功能称为 One-Click Archive https://blogs.office.com/2015/08/04/new-features-coming-to-outlook-on-the-web/(它只是一个移动,因此不是传统意义上的真正存档,除非其他一些进程挂接到该文件夹​​

ArchiveRoot 或 ArchiveMsgFolderRoot 属于 InPlace Archive

干杯 格伦

【讨论】:

感谢代码 sn-p - 成功了。当用户第一次单击此存档按钮时,系统会提示他们希望将存档邮件存储在哪里 - 在称为存档的默认文件夹或他们选择的文件夹中。如果他们选择一个自定义文件夹,您知道是否有任何方法可以通过 EWS 以编程方式查找该文件夹的名称?基本上,我希望始终能够在他们的存档文件夹中找到邮件——无论他们选择了什么。 不是我知道他们没有记录配置的存储位置,当你设置它时,这似乎不会触发我可以在邮箱中看到的任何项目更新或创建. 我迟到了,迟到了学习 EWS API(我用的是 PowerShell),但是这个 sn-p 帮助我找到了方向。漂亮、流畅、简短。

以上是关于使用 EWS 访问存储在 Exchange 365 中存档文件夹中的邮件的主要内容,如果未能解决你的问题,请参考以下文章

使用 EWS 访问通用流程收件箱

无法让 Exchange EWS SDK 中的 AutodiscoverSample 工作 - 使用 Office 365 进行身份验证

从 Java 应用程序调用 https://outlook.office365.com/EWS/Exchange.asmx 时出现随机 SSLHandshakeException

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

通过 EWS API 连接到 Office 365

使用 EWS(Exchange Web Service)协议读取邮件发送邮件