我最近使用C#编写了.NET控制台应用程序的代码。目的是读取特定文件夹中的电子邮件,解析它们以获取特定值,然后将其保存到数据库中。
在我最初编写此电子邮件时,我们的电子邮件系统是Exchange2003。但是,我意识到我们很快将升级到Exchange 2010:ergo,我构建了在两种环境下均可使用的代码。
但是,在迁移到Exchange 2010之后,该应用程序已损坏。
该应用程序使用EWS API for 2010功能。当尝试使用ExchangeService的FindFolders方法查找publicfoldersroot时,它将引发异常。这是代码:
ExchangeService service = new ExchangeService();
FindFoldersResults findRootFldrs;
service.UseDefaultCredentials = true;
service.AutodiscoverUrl("[email protected]", delegate(string x) {
return true; });
FolderView fview = new FolderView(100);
fview.Traversal = FolderTraversal.Deep;
findRootFldrs = service.FindFolders(WellKnownFolderName.PublicFoldersRoot,
fview);
异常(exception):
ErrorInvalidSchemaVersionForMailboxVersion
,又名:我尝试过:
我可以在Outlook 2007中查看公用文件夹。可以在智能感知中使用publicfoldersroot属性;该代码适用于本地文件夹(我可以解析我的收件箱)。
我当前的想法是,这是最近安装的Exchange 2010的设置:不幸的是,这并不是我真正的领域。异常告诉我它正在尝试使用Exchange的早期版本。将其设置为2007只会导致代码由于内部服务器错误而失败。
最佳答案
旧帖子,但这原来是我的答案:http://technet.microsoft.com/en-us/library/bb629522.aspx
本质上,用于连接EWS的帐户在邮箱数据库中有一个邮箱,该邮箱的默认公用文件夹服务器仍为Exchange2003。通过EWS枚举公用文件夹的所有尝试均失败。将其交换为2010后端服务器可立即将其治愈。
关于c# - 无法访问公用文件夹的根目录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2502169/