我在 Exchange Server
A
上创建了一个帐户,并且我正在尝试访问在 Exchange 服务器 X
上配置的共享邮箱 B
上的项目。我拥有访问邮箱 X
所需的权限,并且可以使用 MS Outlook 执行此操作,但无法使用 EWS 托管 API 执行此操作。我使用了以下代码:
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.Credentials = new WebCredentials("[email protected]", "password");
service.Url = new Uri("https://organization.com/EWS/Exchange.asmx");
Mailbox somemailbox = new Mailbox("[email protected]");
FolderId folderInbox = new FolderId(WellKnownFolderName.Inbox, somemailbox);
FindFoldersResults findResults = service.FindFolders(folderInbox, new FolderView(int.MaxValue));
这会返回一个错误,指向代码的最后一行(service.FindFolders):
“访问资源的帐户必须与正在访问的委托帐户位于同一邮箱服务器版本上。”。
一开始我以为服务器的版本不兼容,但是当我将代码第1行中的
ExchangeVersion
更改为“Exchange2007_SP1”以外的任何版本时,我收到错误消息:
Exchange Server 不支持请求的版本。,
所以我猜这不是版本相关的问题。我想在这种情况下我将无法使用运行正常的 MS Outlook 进行连接。
我认为我很容易错过一些东西,但我不知道是什么......
问题是您连接到主服务器。如果您想访问委托帐户,则必须将 ews-url 更改为存储邮箱的服务器的 ews-address。我的公司有几乎相同的场景,并且具有不同的网址,它对我来说效果很好。如果您的交换服务器配置正确,您可以使用托管 api 的自动发现函数“service.Autodiscover()”来获取正确的 ews-address。