我正在尝试创建一个简单的程序,以便在我公司的MS Exchange收件箱中阅读电子邮件。 我写了一个simle程序如下,但它不起作用。
有人可以指导我,这里有什么问题吗? 我尝试了自动发现和网址模式。
当我运行程序时,我看到以下输出:
111111111111111 Aug 08, 2014 12:37:12 AM
org.apache.commons.httpclient.auth.AuthChallengeProcessor
selectAuthScheme INFO: NTLM authentication scheme selected Aug 08,
2014 12:37:12 AM org.apache.commons.httpclient.HttpMethodDirector
processWWWAuthChallenge INFO: Failure authenticating with NTLM <any
realm>@autodiscover.<cmpany>:443
该计划:
package com.experiment;
import microsoft.exchange.webservices.data.ExchangeCredentials;
import microsoft.exchange.webservices.data.ExchangeService;
import microsoft.exchange.webservices.data.ExchangeVersion;
import microsoft.exchange.webservices.data.FindItemsResults;
import microsoft.exchange.webservices.data.Item;
import microsoft.exchange.webservices.data.ItemView;
import microsoft.exchange.webservices.data.WebCredentials;
import microsoft.exchange.webservices.data.WellKnownFolderName;
public class MSOutlookIntg {
private static final String EMAIL_ID = "myid@company.com";
private static final String EMAIL_PWD = "mypwd";
public static void main(String[] args) {
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);
ExchangeCredentials credentials = new WebCredentials(EMAIL_ID, EMAIL_PWD);
service.setCredentials(credentials);
try {
System.out.println("111111111111111");
service.autodiscoverUrl(EMAIL_ID);
//service.setUrl(new URI("https://<email-server>/EWS/Exchange.asmx"));
service.setTraceEnabled(true);
System.out.println("222222222222222");
ItemView view = new ItemView(10);
FindItemsResults<Item> findResults;
findResults = service.findItems(WellKnownFolderName.Inbox, view);
for(Item item : findResults.getItems())
{
item.load();
System.out.println(item.getSubject());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
答案 0 :(得分:0)
您应该将service.setTraceEnabled
移到ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2)
之后的第一行。完整跟踪是成功调试问题的关键。
顺便说一下。我必须自己实现一个跟踪监听器。您是否有附加到服务的工作跟踪侦听器?没有它,setTraceEnabled将不会有太多帮助。
您是否尝试过&#34; EnableScpLookup&#34;?
在我的情况下,将EnableSCPLookup设置为True从来都不是问题。它可能需要几毫秒,直到没有返回适当的SCP记录,但大部分时间它都节省了我20秒(!)等待https://autodiscover.company.com
的Web服务器超时因为https证书(服务器等待)客户端证书和客户端等待服务器的回复...)。
此外,URL模式出现了什么错误?它可以是相同的,因为你不应该得到一个&#34;自动发现&#34;绕过自动发现时的错误...
EDITh说您应该检查您的电子邮件是否与您的UPN名称相同。我认为您的凭据必须包含UPN名称,而不是电子邮件?从Microsoft文档中不完全清楚,因为Microsoft选择UPN来匹配电子邮件地址。