无法使用EWS Java API获取发件人电子邮件地址

时间:2012-11-05 11:49:40

标签: exchange-server exchangewebservices ewsjavaapi

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

它会显示在邮件中,也会在回复电子邮件时显示。

请告知如何解决此问题。

2 个答案:

答案 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()。