如何检索多个扩展属性使用EWS和Java

时间:2014-02-26 17:47:54

标签: c# java outlook exchangewebservices

我在Outlook 2010的contacts文件夹中创建了两个“User-Defined”字段。我正在使用C#EWS API的Java端口。我的目标是为特定用户读取每个联系人的字段值。到目前为止的问题是检索多个字段。在下面的代码中,您会发现我定义了多个(2)字段,这些字段是我想要访问的扩展属性。但是,在输出中,我最多只检索1个字段。例如,联系人有两个字段,它只返回它找到的第一个字段。如果它只有两个字段中的一个,它将返回任何一个填充的字段。有什么想法吗?

private static void printContacts(ExchangeService service, int numOfContacts) throws Exception{        
    // Defined the properties you want to retreive
    ExtendedPropertyDefinition propertyOne = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.PublicStrings, "property1", MapiPropertyType.String);
    ExtendedPropertyDefinition propertyTwo= new ExtendedPropertyDefinition(DefaultExtendedPropertySet.PublicStrings, "property2", MapiPropertyType.String);

    // Push the customer properties into an arary
    ExtendedPropertyDefinition[] list = {propertyOne , propertyTwo}; 

    // Create a property set to hold the properties
    PropertySet propertySet = new PropertySet(BasePropertySet.FirstClassProperties, list);

    // Get items from mail box        
    ItemView view = new ItemView(numOfContacts);               
    try {            
        FindItemsResults<Item> contactResults = service.findItems(WellKnownFolderName.Contacts, view);

        for(Item item : contactResults.getItems()){
            item.load();

            Contact contact = Contact.bind(service, item.getId(), propertySet);

            System.out.println("count: " + contact.getExtendedProperties().getCount());

            for(ExtendedProperty prop : contact.getExtendedProperties()){
                String propertyName = prop.getPropertyDefinition().getName().toString();
                String propertyValue = prop.getValue().toString();

                System.out.println(propertyName +" : "+ propertyValue);
            }

        }
    }catch(Exception e){
        e.printStackTrace();
    }

}

当我打印出扩展属性的数量时,即使设置了两个扩展属性,它也总是一个。任何帮助将不胜感激。

0 个答案:

没有答案