java - 打印消息正文

标签 java email exchangewebservices ewsjavaapi

我正在尝试制作一个程序,可以整齐地打印我收件箱中的所有邮件正文,但交换网络服务却使其变得困难。我似乎可以轻松访问除消息正文之外的所有内容。这就是我现在正在做的事情

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;
    }


}

当然,我已经为我的代码填写了适当的凭据和域。当我运行这个时,我收到了这条消息。

Exception in thread "main" microsoft.exchange.webservices.data.ServiceObjectPropertyException: You must load or assign this property before you can read its value.
    at microsoft.exchange.webservices.data.PropertyBag.getPropertyValueOrException(Unknown Source)
    at microsoft.exchange.webservices.data.PropertyBag.getObjectFromPropertyDefinition(Unknown Source)
    at microsoft.exchange.webservices.data.Item.getBody(Unknown Source)
    at Main.main(Main.java:26)

第 26 行是我尝试打印正文的行。我做错了什么?

最佳答案

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

Item item = findResults.getItems().get(i);
item.Load()

干杯 格伦

关于java - 打印消息正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24640087/

相关文章:

java - 持久对象的历史、差异和恢复

java - GSON解析未指定类型变量

c# - Exchange EWS 获取房间日历

mono - 与 OS X 上的 Mono 相比,Windows 上 .NET 3.5 的 TimeZoneInfo 实例有区别吗?

java - 在java中更改多个textView的颜色

java - 缓存空值

php - 在 PHP 中发送电子邮件时发件人和名称中的编码问题?

php - 无法在实时环境中使用 SmtpTransport 使用 SwiftMailer 发送邮件,但可以在本地主机中发送

css - 将电子邮件消息呈现给 React 中的组件

c# - 将 future 的本地日期时间转换为 UTC