如何从Exchange服务器获取联系人的照片

时间:2016-11-30 15:03:31

标签: exchange-server ewsjavaapi

根据此tutorial,我试图获取联系人照片

private String createPhoto() {
    try {
        AttachmentCollection attachments = contact.getAttachments();
        for (Attachment attachment : attachments.getItems()) {
            if (attachment instanceof FileAttachment) {
                boolean isPhoto = ((FileAttachment) attachment).isContactPhoto();
                if (isPhoto) {
                    attachment.load();
                    FileAttachment photo = contact.getContactPictureAttachment();

                    String filename = photo.getName() + ".jpg";
                    photo.load(new FileOutputStream(filename, true));
                    return filename;
                }
            }
        }
    } catch (Exception ex) {
        LOGGER.info("" + ex);
    }
    return null;
}

但是, attachments.getItems()始终是一个空数组。

在我的邮箱上,我与照片的联系人很少,我可以通过拨打网址https://companyname.exchange.com/EWS/Exchange.asmx/s/GetUserPhoto?email=name@company.exchange.com&size=HR360x360来接收他们

为什么我无法从代码中获取照片?

1 个答案:

答案 0 :(得分:0)

  
    

在我的邮箱上,我与照片的联系人很少,我可以通过拨打网址https://companyname.exchange.com/EWS/Exchange.asmx/s/GetUserPhoto?email=name@company.exchange.com&size=HR360x360来接收他们

  

该请求获取存储在(源)用户邮箱(或ActiveDirectory中的低分辨率)中的Userphoto,并通过该操作提供。

您的代码正在尝试检索可以存储为UserMailbox中的联系人附件的ContactPhoto。

所以这些是两个独立的东西,你要处理哪一个?,因为你还没有展示它,你需要确保你的ExchangeServerRequest版本设置为2010或更高版本,因为联系人照片没有被退回您可能还希望使用EWS编辑器https://ewseditor.codeplex.com/快速测试问题中的联系人,这将允许您获取对象并查看是否存在使用EWS的ContactPhoto附件。