使用 EWS 托管 API 与 EWS 进行通信

查找有关如何使用 EWS 托管 API 与 Exchange 中的 EWS 通信的信息。

注意

从 2022 年 10 月开始,我们将删除在 Exchange Online 中对 EWS 使用基本身份验证的功能:弃用 Exchange Online 中的基本身份验证。 应改用 OAuth 身份验证。 使用 OAuth 对 EWS 应用程序进行身份验证

EWS 托管 API 中的 ExchangeService 类包含用于设置用户凭据、标识 EWS 终结点、发送和接收 SOAP 消息以及将绑定配置为与 EWS 通信的方法和属性。 在使用 EWS 托管 API 执行任何任务之前,必须创建ExchangeService 类的实例并将其绑定到 EWS。

使用用户凭据和 EWS 终结点设置 ExchangeService 对象后,引用 ExchangeService 对象的任何邮箱对象都可以使用以下方法类型与 EWS 通信:

  • ExchangeService 对象方法–ExchangeService 对象上未继承自基本 Object 类型的所有方法都会调用 EWS。
  • Exchange 邮箱项和文件夹类型方法。

表 1. 与 EWS 通信的邮箱项目和文件夹类型方法

方法 功能 它调用的操作
Load
获取项、附件或用户配置对象的属性。
GetItem 操作

GetAttachment 操作

GetUserConfiguration 操作
绑定
使用服务器上现有项中的信息填充客户端上的新项。
GetItem 操作
Save
保存服务器上客户端项的副本。
UpdateItem 操作

UpdateFolder 操作

CreateItem 操作

CreateFolder 操作
更新
使用在客户端上所做的更改更新服务器。

对于项目和文件夹,Update 方法使用 UpdateItem 操作UpdateFolder 操作
UpdateItem 操作

UpdateFolder 操作
删除
删除服务器上的项。

对于项目和文件夹,Delete 方法使用 DeleteFolder 操作
DeleteItem 操作

DeleteFolder 操作
Copy
在服务器上创建项或文件夹的副本。
CopyItem 操作

CopyFolder 操作
移动
移动服务器上的项或文件夹。
MoveItem 操作

MoveFolder 操作

使用 EWS 托管 API 与 EWS 通信

  1. 实例化 ExchangeService 类。

     ExchangeService service = new ExchangeService();
    

    注意

    使用空构造函数实例化 ExchangeService 将创建绑定到最新已知版本 Exchange 的实例。 或者,可以通过将版本指定为参数来面向特定版本的 Exchange。 ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);

  2. 设置向 Exchange 服务器发送请求的用户的凭据。 如果要使用经过身份验证的用户的凭据从登录到域的计算机连接到 EWS, 设置 ExchangeService 对象上的 UseDefaultCredentials 属性为 true

     // Connect by using the default credentials of the authenticated user.
     service.UseDefaultCredentials = true;
    

    如果不想使用默认用户凭据进行连接,请在 ExchangeService 对象上设置 Credentials 属性以显式指定其他用户的凭据。 如果将 Exchange Online 或 Exchange Online 用作 Office 365 的一部分,则只需使用用户名和密码即可使用基本身份验证。 NTLM 身份验证需要域名。

     // Connect by using the credentials of user1 at contoso.com.
     service.Credentials = new WebCredentials("user1@contoso.com", "password");
    

    还可以使用用户的域名和密码指定用户的凭据。

     // Connect by using the credentials of contoso/user1.
     service.Credentials = new WebCredentials("user1", "password", "contoso");
    

    注意

    如果 UseDefaultCredentials 属性设置为true,则忽略 Credentials 属性的值。

  3. 设置 EWS 终结点的 URL。 此 URL 会在客户端访问服务器上找到 exchange.asmx 文件。

     // Use Autodiscover to set the URL endpoint.
     service.AutodiscoverUrl("user1@contoso.com");
    

    注意

    尽管可以显式将 ExchangeServiceUrl 属性设置为硬编码值,但出于以下原因,建议改用自动发现服务,原因如下:

    • 自动发现可以确定给定用户的最佳终结点(最靠近用户邮箱服务器的终结点)。
    • 如果部署了新的客户端访问服务器,则 EWS URL 可能会更改。 在此方案中,使用自动发现表示无需更改代码。
    • 应显式设置 URL 或调用 AutodiscoverUrl,但不应同时执行这两种操作。

另请参阅