2015-07-21 21 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

感谢您发布自己的答案。这真的帮助了我。 –