[英]Can we connect to Exchange 2016 using EWS Java API ver 2.0 jar?
[英]Connect to Office365 Exchange Server with ews-java-api-2.0.jar in Core JAVA
我正在使用ews-java-api-2.0.jar連接到office365,下面是示例代碼:
package javaapplication6;
import java.net.URI;
import microsoft.exchange.webservices.data.autodiscover.IAutodiscoverRedirectionUrl;
import microsoft.exchange.webservices.data.credential.ExchangeCredentials;
import microsoft.exchange.webservices.data.core.ExchangeService;
import microsoft.exchange.webservices.data.core.enumeration.property.WellKnownFolderName;
import microsoft.exchange.webservices.data.core.service.folder.Folder;
import microsoft.exchange.webservices.data.credential.WebCredentials;
public class JavaApplication6 {
public static class RedirectionUrlCallback implements IAutodiscoverRedirectionUrl {
public boolean autodiscoverRedirectionUrlValidationCallback(String redirectionUrl) {
return redirectionUrl.toLowerCase().startsWith("https://");
}
}
public static ExchangeService connectViaExchangeManually(String email, String password)
throws Exception {
ExchangeService service = new ExchangeService();
ExchangeCredentials credentials = new WebCredentials(email, password);
service.setUrl(new URI("https://outlook.office365.com/EWS/Exchange.asmx"));
service.setCredentials(credentials);
service.setTraceEnabled(true);
Folder inbox = Folder.bind(service, WellKnownFolderName.Inbox);
System.out.println("messages: " + inbox.getTotalCount());
return service;
}
public static ExchangeService connectViaExchangeAutodiscover(String email, String password) {
ExchangeService service = new ExchangeService();
try {
service.setCredentials(new WebCredentials(email, password));
service.autodiscoverUrl(email, new RedirectionUrlCallback());
service.setTraceEnabled(true);
Folder inbox = Folder.bind(service, WellKnownFolderName.Inbox);
System.out.println("messages: " + inbox.getTotalCount());
}
catch (Exception e){
e.printStackTrace();
}
return service;
}
public static void main(String[] args) {
try {
ExchangeService service = connectViaExchangeManually("<name>@<company>.onmicrosoft.com", "<password>");
} catch (Exception e) {
e.printStackTrace();
}
}
}
當我從Netbeans IDE運行此代碼時,出現以下錯誤:
run:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/config/Lookup
at javaapplication6.JavaApplication6.connectViaExchangeAutodiscover(JavaApplication6.java:33)
at javaapplication6.JavaApplication6.main(JavaApplication6.java:48)
Caused by: java.lang.ClassNotFoundException: org.apache.http.config.Lookup
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 2 more
C:\Users\Brijesh Jalan\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 0 seconds)
我被困在這里已有2天,任何幫助將不勝感激!
嗨,添加以下jar文件
EWSJavaAPI_1.2original.jar
EWSJavaAPIWithJars_1.2.1.jar
httpclient-4.2.5.jar
httpcore-4.2.4.jar
jcifs-1.3.17.jar
commons-codec-1.7.jar
commons-logging-1.1.1.jar
解決所有依賴關系。您需要在Chrome瀏覽器中打開網址-
https://outlook.office365.com/EWS/Exchange.asmx
然后輸入將在下面的代碼中使用的身份驗證憑據的用戶名和密碼。
package EWSJavaAPI;
import java.net.URI;
import microsoft.exchange.webservices.data.ExchangeCredentials;
import microsoft.exchange.webservices.data.ExchangeService;
import microsoft.exchange.webservices.data.ExchangeVersion;
import microsoft.exchange.webservices.data.Folder;
import microsoft.exchange.webservices.data.IAutodiscoverRedirectionUrl;
import microsoft.exchange.webservices.data.WebCredentials;
import microsoft.exchange.webservices.data.WellKnownFolderName;
public class EWSJavaAPI {
public static class RedirectionUrlCallback implements IAutodiscoverRedirectionUrl {
public boolean autodiscoverRedirectionUrlValidationCallback(String redirectionUrl) {
return redirectionUrl.toLowerCase().startsWith("https://");
}
}
public static ExchangeService connectViaExchangeAutodiscover(String email, String password) {
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);
try {
service.setCredentials(new WebCredentials(email, password));
service.autodiscoverUrl(email, new RedirectionUrlCallback());
service.setTraceEnabled(true);
Folder inbox = Folder.bind(service, WellKnownFolderName.Inbox);
System.out.println("messages: " + inbox.getTotalCount());
}
catch (Exception e){
e.printStackTrace();
}
return service;
}
public static void main(String[] args) {
try {
System.out.println("Hello World");
ExchangeService service = connectViaExchangeAutodiscover("user@domain.com", "xxxxxx");
} catch (Exception e) {
e.printStackTrace();
}
}
}
在我使用Office365時,它的效果很好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.