11

我正在使用 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> 

它出现在消息中以及回复电子邮件时。

请告知如何解决此问题。

4

2 回答 2

14

找到了解决方案,我必须item.load();在获取发件人电子邮件地址之前使用。

于 2012-11-11T10:18:22.540 回答
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()。

于 2020-07-19T08:30:00.433 回答