web-dev-qa-db-ja.com

EWS APIによるOffice 365への接続

コンソールアプリケーションでEWS APIを使用してメールボックスアイテムを処理していますが、接続スクリプトは次のようになります

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.UseDefaultCredentials = true;
service.AutodiscoverUrl("[email protected]");

しかし、メールアカウントがOffice 365クラウドに移動したことがわかりました。認証を変更するにはどうすればよいですか?

eWSサービスのURLを見つけました

 service.Url = new Uri("https://Outlook.office365.com/EWS/Exchange.asmx");

しかし、私はそれを使用する方法を知りません。

ありがとうございました

17
Muflix

以下のコードを使用して、Office 365のEWSに接続できます。

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013_SP1);

service.Credentials = new WebCredentials("[email protected]", "password");
service.AutodiscoverUrl("[email protected]", RedirectionUrlValidationCallback);

次のように、AutodiscoveryUrl関数に対して1つのコールバック関数を定義する必要があります。

private static bool RedirectionUrlValidationCallback(string redirectionUrl)
{
    // The default for the validation callback is to reject the URL.
    bool result = false;

    Uri redirectionUri = new Uri(redirectionUrl);

    // Validate the contents of the redirection URL. In this simple validation
    // callback, the redirection URL is considered valid if it is using HTTPS
    // to encrypt the authentication credentials. 
    if (redirectionUri.Scheme == "https")
    {
        result = true;
    }
    return result;
}
17
Matt

これはかなり古いソリューションであることは知っていますが、それでも私にとって非常に役に立ちました。 「通常の」ネットワークバージョンのExchangeで動作するツールがいくつかありますが、これまでのところExchange Onlineでのテストは失敗しました(「自動検出サービスが見つかりませんでした」などのエラーが発生しました)。

ここで重要なのは、NetworkCredentialの代わりにWebCredentialsを使用し、ユーザー名の代わりに電子メールアドレスを使用することです。

2
GeeBee