Exchange server Can';无法使用EWS Java API获取发件人电子邮件地址

Exchange server Can';无法使用EWS Java API获取发件人电子邮件地址,exchange-server,exchangewebservices,ewsjavaapi,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 instanc

我正在使用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
。我可以看到该电子邮件包含如下发件人:

Test User <testuser@testdomain.com> 
测试用户
它出现在信息中,也出现在回复电子邮件时


请建议如何解决此问题。

找到了解决方案,我必须使用
item.load() 

,虽然上面的工作是完美的,但作为替代方案,如果使用属性视图进行搜索,则不需要加载,请考虑代码片断

    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);
ItemView=newitemview(100);
view.getOrderBy().add(ItemSchema.DateTimeReceived,SortDirection.Descending);
view.setPropertySet(新PropertySet(BasePropertySet.IdOnly,
ItemSchema.Subject,
ItemSchema.DateTimeReceived,
EmailMessageSchema.From);
SearchFilterCollection searchCollection=新建SearchFilter.SearchFilterCollection();
searchCollection.add(newsearchfilter.IsEqualTo(EmailMessageSchema.IsRead,!unreadEmailOnly));
FindItemsResults=exchangeService.findItems(WellKnownFolderName.Inbox,
搜索收藏,
视图);

随后,可以调用EmailMessage.getFrom().getAddress()。

使用.NET API,如果不调用Load(根据答案),则内部电子邮件的发件人和发件人是交换地址(RoutingType=“EX”)。但是如果你调用Load,那么它们就是SMTP地址-耶。
    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);