首页 > 解决方案 > 使用 Exchange Web 服务和 Windows 身份验证连接到 Exchange Server

问题描述

我处于需要使用以下信息连接到 Exchange 服务器的情况。

服务器 URL 电子邮件地址 用户名 密码

在理想情况下,我会提供电子邮件和密码,并使用自动发现进行连接,但是,客户端没有启用自动发现,出于安全原因,我无法获得密码。目前我所做的是使用有权连接到邮箱的 Windows 帐户运行我的 Windows 服务,例如:

NetworkCredential credentials = CredentialCache.DefaultNetworkCredentials;    
_service.Url = new Uri(_serverURL);
_service.Credentials = credentials;

这样做的问题是,如果 Windows 帐户有多个与之关联的邮箱,它将连接到它找到的第一个邮箱。我希望能够连接到我指定的邮箱。这可能吗?

标签: c#exchangewebservices

解决方案


该对象实际上并没有连接到邮箱,并且在 EWS 作为其 SOAP 服务中没有持久连接。ExchangeService 对象保存连接信息,因此当您发出 FindFolder、Bind 等请求时,它保存 EWS 端点和要使用的凭据。

如果您想访问另一个邮箱(除了您在服务对象中指定的安全凭据之外),那么您只需要使用 FolderId 对象的邮箱重载,例如。

FolderId RootFolder = new FolderId(WellKnownFolderName.MsgFolderRoot, "MailboxtoAccess@domain.com");

推荐阅读