我最近使用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,又名:



我尝试过:
  • 将exchangeservice设置为2007(引发异常:“发生内部服务器错误。操作失败。”)
  • 向我授予对公用文件夹的最高权限(无效)
  • 手动设置我的凭据(无效)

  • 我可以在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/

    10-15 20:03