コンソールアプリケーションで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");
しかし、私はそれを使用する方法を知りません。
ありがとうございました
以下のコードを使用して、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;
}
これはかなり古いソリューションであることは知っていますが、それでも私にとって非常に役に立ちました。 「通常の」ネットワークバージョンのExchangeで動作するツールがいくつかありますが、これまでのところExchange Onlineでのテストは失敗しました(「自動検出サービスが見つかりませんでした」などのエラーが発生しました)。
ここで重要なのは、NetworkCredentialの代わりにWebCredentialsを使用し、ユーザー名の代わりに電子メールアドレスを使用することです。