EWS マネージ API を使用して EWS と通信する
Exchange で EWS マネージ API を使用して EWS と通信する方法について説明します。
注:
2022 年 10 月より、Exchange Online for 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 操作 |
Bind |
クライアント上の新しいアイテムに、サーバー上の既存のアイテムからの情報を取り込みます。 |
GetItem 操作 |
Save |
クライアント アイテムのコピーをサーバーに保存します。 |
UpdateItem 操作 UpdateFolder 操作 CreateItem 操作 CreateFolder 操作 |
Update |
クライアント上で加えられた変更に基づいてサーバーを更新します。 アイテムおよびフォルダーの場合、Update メソッドは UpdateItem 操作および UpdateFolder 操作を使用します。 |
UpdateItem 操作 UpdateFolder 操作 |
Delete |
サーバー上のアイテムを削除します。 アイテムおよびフォルダーの場合、Delete メソッドは DeleteFolder 操作を使用します。 |
DeleteItem 操作 DeleteFolder 操作 |
Copy |
サーバー上のアイテムまたはフォルダーのコピーを作成します。 |
CopyItem 操作 CopyFolder 操作 |
Move |
サーバー上のアイテムまたはフォルダーを移動します。 |
MoveItem 操作 MoveFolder 操作 |
EWS マネージ API を使用して EWS と通信するには
ExchangeService クラスをインスタンス化します。
ExchangeService service = new ExchangeService();
注:
空のコンストラクターで ExchangeService をインスタンス化すると、既知の最新バージョンの Exchange にバインドされたインスタンスが作成されます。 あるいは、バージョンをパラメーターとして指定することにより、特定のバージョンの Exchange を対象にすることもできます。
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
Exchange サーバーに要求を送信するユーザーの資格情報を設定します。 ドメインにログオンしているコンピューターから EWS に接続する場合は、認証されたユーザーの資格情報を使用して、ExchangeService オブジェクトの UseDefaultCredentials プロパティを true に設定します。
// Connect by using the default credentials of the authenticated user. service.UseDefaultCredentials = true;
既定ユーザーの資格情報を使用して接続したくない場合は、ExchangeService オブジェクトの Credentials プロパティを設定することにより、異なるユーザーの資格情報を明示的に指定します。 Exchange Online を使用する場合、または Office 365 の一部として Exchange Online を使用する場合は、ユーザー名とパスワードのみによる基本認証を使用することになります。 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 プロパティの値は無視されます。
EWS エンドポイントの URL を設定します。 この URL は、クライアント アクセス サーバー上の exchange.asmx ファイルの場所を示します。
// Use Autodiscover to set the URL endpoint. service.AutodiscoverUrl("user1@contoso.com");
注:
ExchangeService の Url プロパティをハードコーディング値に明示的に設定することもできますが、次の理由により、代わりに自動検出サービスを使用することをお勧めします。
- 自動検出では、そのときのユーザーに最適なエンドポイント (ユーザーのメールボックス サーバーに最も近いエンドポイント) が特定されます。
- 新しいクライアント アクセス サーバーが配置されると、EWS URL が変わる可能性があります。 このシナリオの場合、自動検出を使用するとコード変更が必要なくなります。
- URL を明示的に設定するか、または AutodiscoverUrl を呼び出す必要がありますが、両方を行うべきではありません。