サーバーからメールを読み取るために、 Microsoft ExchangeWebサービスのJavaAPI(バージョン1.2)をテストしています。これが私のコードです:
String url = "https://my-server/EWS/exchange.asmx";
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.setTraceEnabled(true);
service.setCredentials(new WebCredentials("user", "password"));
service.setUrl(url.toURI());
Mailbox mailbox = new Mailbox("foo@bar.com");
FolderId folder = new FolderId(WellKnownFolderName.Inbox, mailbox);
ItemView view = new ItemView(10);
view.getOrderBy().add(ItemSchema.DateTimeReceived, SortDirection.Descending);
FindItemsResults<Item> items = service.findItems(folder, view);
残念ながら、このコードは次のエラーをスローします。
Exception in thread "main" microsoft.exchange.webservices.data.EWSHttpException: Connection not established
at microsoft.exchange.webservices.data.HttpClientWebRequest.throwIfConnIsNull(Unknown Source)
at microsoft.exchange.webservices.data.HttpClientWebRequest.getResponseCode(Unknown Source)
at microsoft.exchange.webservices.data.EwsUtilities.formatHttpResponseHeaders(Unknown Source)
at microsoft.exchange.webservices.data.ExchangeServiceBase.traceHttpResponseHeaders(Unknown Source)
at microsoft.exchange.webservices.data.ExchangeServiceBase.processHttpResponseHeaders(Unknown Source)
at microsoft.exchange.webservices.data.SimpleServiceRequestBase.internalExecute(Unknown Source)
at microsoft.exchange.webservices.data.MultiResponseServiceRequest.execute(Unknown Source)
at microsoft.exchange.webservices.data.ExchangeService.findItems(Unknown Source)
at microsoft.exchange.webservices.data.ExchangeService.findItems(Unknown Source)
at foo.bar.TestMail.main(TestMail.java:52)
現在のコードの何が問題なのか理解できません。手がかりがありますか、または少なくともいくつかのテストを試してみてください。
Webサービス(https//my-server/exchange.asmx
)は私のJavaコードにアクセスできることに注意してください。
それが役立つかどうかはわかりませんが、ログに表示されるトレースで次のことがわかりました。
<Trace Tag="EwsResponse" Tid="1" Time="2013-01-28 10:47:03Z">
<html><head><title>Error</title></head><body>The function requested is not supported
</body></html>
</Trace>
編集
別のテストを行いました。今回は、オブジェクトservice.setUseDefaultCredentials(true);
を設定する代わりに、デフォルトのクレデンシャル(つまり、自分の電子メールアカウント)を使用しWebCredentials
ます。接続はまだ確立されていませんが、別のエラーが発生します(トレースログの興味深い部分のみを取得しました)。
<h1>You are not authorized to view this page</h1>
You do not have permission to view this directory or page using the credentials that you supplied because your Web browser is sending a WWW-Authenticate header field that the Web server is not configured to accept.
(...)
<h2>HTTP Error 401.2 - Unauthorized: Access is denied due to server configuration.<br>Internet Information Services (IIS)</h2>
もちろん、Exchangeサーバー側では何にもアクセスしたり変更したりすることはできません。認証を成功させる方法はありますか?