Java 打印消息正文

Java 打印消息正文,java,email,exchangewebservices,ewsjavaapi,Java,Email,Exchangewebservices,Ewsjavaapi,我正在尝试制作一个程序,该程序将整洁地打印我收件箱中的所有邮件正文,但exchange web服务使其变得困难。除了信息的正文,我似乎很容易接触到任何东西。这就是我现在正在做的 static final int SIZE = 10; public static void main(String [] args) throws Exception { ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010

我正在尝试制作一个程序,该程序将整洁地打印我收件箱中的所有邮件正文,但exchange web服务使其变得困难。除了信息的正文,我似乎很容易接触到任何东西。这就是我现在正在做的

static final int SIZE = 10;
public static void main(String [] args) throws Exception {
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010);

ExchangeCredentials credentials = new WebCredentials("USERNAME","PASS");
service.setCredentials(credentials);
service.setUrl(new URI("https://MY_DOMAIN/ews/exchange.asmx"));

ItemView view = new ItemView (SIZE);
FindItemsResults<Item> findResults = service.findItems(WellKnownFolderName.Inbox, view);
System.out.println(findResults.getItems().size() + "Messages");


for (int i = 0; i < SIZE; ++i) {
    try {
        Item item = findResults.getItems().get(i);
    System.out.println("SUBJECT: " + item.getSubject());
    System.out.println("TO: " + item.getDisplayTo());
    System.out.println("BODY: " + item.getBody().toString());


    } catch (IndexOutOfBoundsException e) {
        break;
    }


}

第26行是我试图打印主体的那一行。我做错了什么?

FindItem操作不会返回消息体,因此需要向服务器发出单独的GetItem请求才能获取此消息。在托管API中,您应该能够使用Load方法来执行此操作,所以只需更改

Item item = findResults.getItems().get(i);
item.Load()
干杯
格伦

事实上我已经弄明白了。看起来ExchangeService在提取完所需信息后将关闭连接。为了解决这个问题,我做了一个函数

private static ExchangeService getService() throws Exception {
    ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010);
    ExchangeCredentials credentials = new WebCredentials("USERNAME","PASS");
    service.setCredentials(credentials);
    service.setUrl(new URI("DOMAIN"));
    return service;
}
然后我就这样叫load

getService().loadPropertiesForItems(findResults, itempropertyset);
其中我定义了itempropertyset

PropertySet itempropertyset = new PropertySet(BasePropertySet.FirstClassProperties);
itempropertyset.setRequestedBodyType(BodyType.Text);
view.setPropertySet(itempropertyset);

它给我这个Http连接错误,但仍然拉我的收件箱中的电子邮件数量。线程“main”microsoft.exchange.webservices.data.EWSHttpException中出现异常:连接未建立连接未建立是Java API中的已知错误,要解决此问题,您需要自己修补代码,请参阅我没有使用HTML。有什么办法吗??
PropertySet itempropertyset = new PropertySet(BasePropertySet.FirstClassProperties);
itempropertyset.setRequestedBodyType(BodyType.Text);
view.setPropertySet(itempropertyset);