我最近使用C#编写了一个.NET控制台应用程序。它的目的是读取特定文件夹中的电子邮件,解析它们以获取特定值并将其保存到数据库中。
我们的电子邮件系统,在我最初编写此代码时,是Exchange 2003。然而,我意识到我们很快就会升级到Exchange 2010,因此我构建了可以在两个环境中工作的代码。
然而,在迁移到Exchange 2010后,该应用程序出现了故障。
该应用程序使用EWS API进行2010功能。当它尝试使用ExchangeService的FindFolders方法查找publicfoldersroot时,它会抛出异常。以下是代码:
异常情况:
我目前的想法是它是在最近安装的Exchange 2010上的一个设置:不幸的是这不是我的专业领域。异常告诉我它正在尝试使用以前版本的Exchange。将其设置为2007只会导致代码因内部服务器错误而失败。
我们的电子邮件系统,在我最初编写此代码时,是Exchange 2003。然而,我意识到我们很快就会升级到Exchange 2010,因此我构建了可以在两个环境中工作的代码。
然而,在迁移到Exchange 2010后,该应用程序出现了故障。
该应用程序使用EWS API进行2010功能。当它尝试使用ExchangeService的FindFolders方法查找publicfoldersroot时,它会抛出异常。以下是代码:
ExchangeService service = new ExchangeService();
FindFoldersResults findRootFldrs;
service.UseDefaultCredentials = true;
service.AutodiscoverUrl("xxxxx@xxxx.xxx", delegate(string x) {
return true; });
FolderView fview = new FolderView(100);
fview.Traversal = FolderTraversal.Deep;
findRootFldrs = service.FindFolders(WellKnownFolderName.PublicFoldersRoot,
fview);
异常情况:
ErrorInvalidSchemaVersionForMailboxVersion
,也称为:
我尝试过:请求的邮箱不支持指定的RequestServerVersion
将ExchangeService设置为2007(抛出异常:“发生内部服务器错误。操作失败。”)
将自己赋予最高级别的公共文件夹权限(没有效果)
手动设置我的凭据(没有效果)
我目前的想法是它是在最近安装的Exchange 2010上的一个设置:不幸的是这不是我的专业领域。异常告诉我它正在尝试使用以前版本的Exchange。将其设置为2007只会导致代码因内部服务器错误而失败。