我正在使用EWS Java API 1.1.5。我想让电子邮件发件人如下:
ItemView view = new ItemView(10);
FindItemsResults<Item> findResults = service.findItems(
WellKnownFolderName.Inbox, view);
for (Item item : findResults.getItems()) {
if (item instanceof EmailMessage) {
String senderEmail = ((EmailMessage) item).getSender().getAddress();
System.out.println("Sender Email: " + senderEmail);
}
}
);
但它总是返回null
。我也尝试了以下内容:
String senderEmail = ((EmailMessage) item).getFrom().getAddress();
但它也会返回null
。我可以看到该电子邮件包含发件人:
Test User <testuser@testdomain.com>
它会显示在邮件中,也会在回复电子邮件时显示。
请告知如何解决此问题。
答案 0 :(得分:13)
找到了解决方案,我必须在获取发件人电子邮件地址之前使用item.load();
。
答案 1 :(得分:0)
虽然上面的方法很完美,但作为替代,如果使用属性视图进行搜索则不需要加载,请考虑代码片段
ItemView view = new ItemView(100);
view.getOrderBy().add(ItemSchema.DateTimeReceived, SortDirection.Descending);
view.setPropertySet(new PropertySet(BasePropertySet.IdOnly,
ItemSchema.Subject,
ItemSchema.DateTimeReceived,
EmailMessageSchema.From));
SearchFilterCollection searchCollection=new SearchFilter.SearchFilterCollection();
searchCollection.add(new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, !unreadEmailOnly));
FindItemsResults<Item> result=exchangeService.findItems(WellKnownFolderName.Inbox,
searchCollection,
view);
随后,可以调用EmailMessage.getFrom()。getAddress()。