Reputation: 33625
I am using EWS Java API 1.1.5. I am trying to get the email sender as follows:
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);
}
}
);
But it always returns null
. I also tried the following:
String senderEmail = ((EmailMessage) item).getFrom().getAddress();
But it also returns null
. I can see that the email contains sender like:
Test User <[email protected]>
It appears in the message and also when replying to the email.
Please advise how to fix this issue.
Upvotes: 11
Views: 5626
Reputation: 3762
While the above works perfectly, as an alternative, loading is not necessary if the search is done with the view of the properties, consider the code snippet
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);
Subsequently, EmailMessage.getFrom().getAddress() can be called.
Upvotes: 0
Reputation: 33625
found the solution, i have to use item.load();
before getting the sender email address.
Upvotes: 15