2016-05-16 7 views
0

Mein Code E-Mail sendenFehler anfordern, wenn ich versuche Mail an Exchange Server senden mithilfe von Exchange Web Services

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2); 
ExchangeCredentials credentials = new WebCredentials("[email protected]","pwd"); 
service.setCredentials(credentials); 
service.setUrl(new URI("C:/shiva/Services.asmx")); 
EmailMessage msg = new EmailMessage(service); 
msg.setSubject("Hello world!"); 
msg.setBody(MessageBody.getMessageBodyFromText("Sent using the EWS Java API.")); 
msg.getToRecipients().add("[email protected]"); 
msg.send(); 

Ich erhalte Fehler folgende wenn ich über Code lief

microsoft.exchange.webservices.data.core.exception.service.remote.ServiceRequestException: The request failed. Protocol C isn't supported for service request. 
    at microsoft.exchange.webservices.data.core.request.SimpleServiceRequestBase.internalExecute(SimpleServiceRequestBase.java:74). 
. 
. 
. 
. 
Caused by: microsoft.exchange.webservices.data.core.exception.service.local.ServiceLocalException: Protocol C isn't supported for service request. 
    at microsoft.exchange.webservices.data.core.ExchangeServiceBase.prepareHttpWebRequestForUrl(ExchangeServiceBase.java:322). 
. 
. 
. 

Bitte helfen mich.

+0

Ja, @ Bill Shannon. Vielen Dank. –

Antwort

1

Das Problem besteht darin, dass Sie nicht auf den URI zeigen, wo Ihre Exchange Web Services (EWS) -Instanz Host gehostet wird. Stattdessen zeigt Ihr nur auf den Ort im Dateisystem:

service.setUrl(new URI("C:/shiva/Services.asmx")); 

So ist die URI-Klasse versucht C:/ als Protokoll zu interpretieren, die in dieser Situation nicht funktionieren wird.

Was Sie tun müssen, ist Folgendes: Hosten Sie Ihre EWS-Instanz auf einem Webserver (in diesem Fall in der Regel Microsoft IIS. Ich denke, Sie benötigen einen Windows Server mit der erforderlichen Serverrollen einrichten etc .). Und lassen Sie Ihren Code stattdessen auf diesen URI zeigen:

service.setUrl(new URI("http://localhost:1234/someWhere/Services.asmx")); 
+0

Danke @khlr. Es funktionierte. –

+0

Wurde eine lokale Instanz ausgeführt? – khlr

+0

Ich habe den Server meiner Organisation verwendet. –

Verwandte Themen