Exchange server Can';无法使用EWS Java API获取发件人电子邮件地址
我正在使用EWS Java API 1.1.5。我正在尝试获取电子邮件发件人,如下所示: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
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);