2

次のように、EWSJavaAPI 1.2 を使用して Exchange サーバー 2007 の電子メールから電子メールを送信しようとしています。

        String email="myuser@mydomain";
        String password="mypass";
        String host="myhost";
        ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
        ExchangeCredentials credentials = new WebCredentials(email, password);
        service.setCredentials(credentials);
        service.setUrl(new java.net.URI("https://" + host
            + "/EWS/Exchange.asmx"));
        service.setTraceEnabled(true);
        service.setTimeout(60 * 1000);


        EmailMessage msg = new EmailMessage(service);
        msg.setSubject("Hello world!");
        msg.setBody(MessageBody.getMessageBodyFromText("Sent using the EWS Managed API."));
        msg.getToRecipients().add("user2@mydomain");
        msg.send();

しかし、私は次のエラーが発生しています:

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.internalCreateItems(Unknown Source)
    at microsoft.exchange.webservices.data.ExchangeService.createItem(Unknown Source)
    at microsoft.exchange.webservices.data.Item.internalCreate(Unknown Source)
    at microsoft.exchange.webservices.data.EmailMessage.internalSend(Unknown Source)
    at microsoft.exchange.webservices.data.EmailMessage.send(Unknown Source)

そしてトレース:

<Trace Tag="EwsRequestHttpHeaders" Tid="1" Time="2014-07-15 11:44:43Z">
POST /EWS/Exchange.asmx HTTP/1.1
Content-type : text/xml; charset=utf-8
Accept-Encoding : gzip,deflate
Keep-Alive : 300
User-Agent : ExchangeServicesClient/0.0.0.0
Connection : Keep-Alive
Accept : text/xml


</Trace>

<Trace Tag="EwsRequest" Tid="1" Time="2014-07-15 11:44:43Z">
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"><soap:Header><t:RequestServerVersion Version="Exchange2007"></t:RequestServerVersion></soap:Header><soap:Body><m:CreateItem MessageDisposition="SendOnly"><m:Items><t:Message><t:Subject>Hello world!</t:Subject><t:Body BodyType="HTML">Sent using the EWS Managed API.</t:Body><t:ToRecipients><t:Mailbox><t:EmailAddress>myuser@mydomain</t:EmailAddress></t:Mailbox></t:ToRecipients></t:Message></m:Items></m:CreateItem></soap:Body></soap:Envelope>
</Trace>

<Trace Tag="EwsResponseHttpHeaders" Tid="1" Time="2014-07-15 11:44:43Z">
401 null
WWW-Authenticate : Basic realm="myhost"
Date : Tue, 15 Jul 2014 11:44:43 GMT
Content-Length : 0
X-Powered-By : ASP.NET
Server : Microsoft-IIS/7.0


</Trace>

<Trace Tag="EwsResponseHttpHeaders" Tid="1" Time="2014-07-15 11:44:43Z">
401 null
WWW-Authenticate : Basic realm="myhost"
Date : Tue, 15 Jul 2014 11:44:43 GMT
Content-Length : 0
X-Powered-By : ASP.NET
Server : Microsoft-IIS/7.0


</Trace>

<Trace Tag="EwsResponse" Tid="1" Time="2014-07-15 11:44:43Z">
Non-textual response
</Trace>

ところで、URLにアクセスしようとしたとき:

https://myhost/EWS/Exchange.asmx

次の URL にリダイレクトされます。

https://myhost/EWS/Services.wsdl

この問題を修正する方法を教えてください。

4

3 に答える 3

2

これは EWS Java のバグです。SimpleServiceRequestBase.readResponse() で応答を読み取る際に問題が発生した場合は、finally ブロックで応答を閉じてから、呼び出し元のメソッド (この場合は internalExecute()) に戻り、ヘッダーを読み取ろうとします。応答。応答が閉じられたので、これは NullPointerException をスローし、これは ServiceRequestException にラップされ、元の Exception を効果的に隠し、スタック トレースに表示されないようにします。

バグを修正すると、おそらく実際のエラーを読みやすくなります。EWS Java のバグに慣れます。私はそれらの30以上を見つけて数えています。

于 2014-07-15T23:04:06.680 に答える
2

これは、最近修正した EWS Java API ライブラリのバグだと思います (このプル リクエストを参照してください)。公式の ews-java-api リポジトリーから更新されたライブラリーを使用してみて(今のところ、自分でビルドする必要があります)、動作するかどうかを確認してください。

于 2015-01-07T13:25:47.603 に答える
0

同じ問題に直面しました。ユーザー名とパスワードを確認してください。間違っている可能性があります。トレース「401」によると、ステータス コードは、あなたが権限のないユーザーであり、接続が確立されていない可能性があることを示します。エラー メッセージとして接続が確立されていません。

于 2015-02-05T05:34:25.460 に答える