我在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();
}
}
当我打印出扩展属性的数量时,即使设置了两个扩展属性,它也总是一个。任何帮助将不胜感激。