jakarta-mail - microsoft.exchange.webservices.data.EWSHttpException : Connection not established

标签 jakarta-mail exchangewebservices exchange-server-2007 ewsjavaapi

我正在尝试使用 EWSJavaAPI 1.2 从 Exchange Server 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>

顺便说一句,当我尝试访问该网址时:

https://myhost/EWS/Exchange.asmx

它将我重定向到以下网址:

https://myhost/EWS/Services.wsdl

请告知如何解决此问题。

最佳答案

这是 EWS Java 中的一个错误。如果在 SimpleServiceRequestBase.readResponse() 中读取响应时出现问题,它将在finally block 中关闭响应,然后将其踢回调用方法(在本例中为internalExecute()),该方法将尝试读取响应。由于响应已关闭,这将引发 NullPointerException,该异常被包装在 ServiceRequestException 中,从而有效隐藏原始异常并防止您在堆栈跟踪中看到它。

修复该错误,您可能会更轻松地阅读实际错误。习惯 EWS Java 中的错误。我已经找到了 30 多个,并且还在增加。

关于jakarta-mail - microsoft.exchange.webservices.data.EWSHttpException : Connection not established,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24757442/

相关文章:

smtp - 使用 Exchange 2007 传输代理编辑 SMTP header

powershell - 无法在 Powershell 中使用带有管道变量的 -filter 子句运行 Get-CASMailbox

java - 将 Java Mail StartTLS 与信任库结合使用

java - 读取javaMail中所有未读消息/最近消息

exchangewebservices - 多个 PushNotification 订阅有些可以正常工作,有些则不能

java - 如何通过 Java Web 服务客户端连接 Exchange Web 服务?

email - Exchange Web 服务托管 API 中的 ConversationId 属性与 ConversationIndex 属性

java - 使用Spring Boot时如何使用SpringTemplateEngine

Java MimeMessage.saveChanges 不调用 updateMessageID

c# - 如何使用 Microsoft.Exchange.WebServices?