2015-07-21 24 views
3

我試圖發送使用EWS protocol.Code電子郵件使用EWS協議片斷中所使用的相同:的Java API

private String username = "[email protected]"; 
private String password = "*****"; 

public void testMethod() throws Exception { 

    ExchangeService service = new ExchangeService(
      ExchangeVersion.Exchange2010_SP2); 
    ExchangeCredentials credentials = new WebCredentials(username, password); 
    service.setTraceEnabled(true); 
    service.setCredentials(credentials); 

    try { 
     service.setUrl(new URI("https://someurl/ews/exchange.asmx")); 
    } catch (URISyntaxException e) { 
     e.printStackTrace(); 
    } 

    EmailMessage msg; 
    try { 
     msg = new EmailMessage(service); 
     msg.setSubject("hello world"); 
     msg.setBody(MessageBody 
       .getMessageBodyFromText("Sent using the EWS API")); 
     msg.getToRecipients().add("[email protected]"); 
     msg.send(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

當我執行上面的代碼,我得到異常如下:

microsoft.exchange.webservices.data.core.exception.service.remote.ServiceRequestException: The request failed. The request failed. The remote server returned an error: (401)Unauthorized 
at microsoft.exchange.webservices.data.core.request.SimpleServiceRequestBase.internalExecute(SimpleServiceRequestBase.java:74) 
at microsoft.exchange.webservices.data.core.request.MultiResponseServiceRequest.execute(MultiResponseServiceRequest.java:158) 
at 

如何確保我有權連接網址? 可以通過cmd提示符進行檢查嗎? 我該如何解決這個問題?

此外,如果有任何使用EWS協議的域名用於測試pupose.I搜索並知道gmail不使用它。還請包括一些用於測試目的的示例。

感謝

回答

1

我知道爲時已晚,但沒有人回答了這個問題又那麼我張貼我的answer.I也面臨類似的問題早在嘗試使用此API來發送電子郵件。

package testEWS; 
import java.net.URI; 
import java.net.URISyntaxException; 
import microsoft.exchange.webservices.data.EmailMessage; 
import microsoft.exchange.webservices.data.ExchangeCredentials; 
import microsoft.exchange.webservices.data.ExchangeService; 
import microsoft.exchange.webservices.data.ExchangeVersion; 
import microsoft.exchange.webservices.data.MessageBody; 
import microsoft.exchange.webservices.data.WebCredentials; 


public class Sendmail { 

       public static void main(String[] args) throws Exception { 
           testMethod(); 
           System.out.println("mail sent.. have fun"); 

       } 


       public static void testMethod() throws Exception { 


          ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2); 
         ExchangeCredentials credentials = new WebCredentials("[email protected] ", "Password"); 
         service.setCredentials(credentials); 

        try { 
         service.setUrl(new URI("https://myexchange.XXXX.com/EWS/Exchange.asmx")); 
        } catch (URISyntaxException e) { 
         e.printStackTrace(); 
        } 

        EmailMessage msg; 
        try { 
         msg = new EmailMessage(service); 
         msg.setSubject("hello world"); 
         msg.setBody(MessageBody.getMessageBodyFromText("Sent using the EWS API")); 
         msg.getToRecipients().add("[email protected]"); 
         msg.send(); 
        } catch (Exception e) { 
         e.printStackTrace(); 
        } 
        System.out.println("Hello"); 
} 
} 

如果您想在本地嘗試,可以試用Microsoft Outlook。 Outlook還使用EWS API。要從Outlook中獲取端點,請點擊此鏈接: http://blogs.msdn.com/b/deva/archive/2011/12/02/how-to-get-the-ews-endpoint-url-from-outlook-2007-2010.aspx

+0

感謝您發佈自己的答案。這真的幫助了我。 –