Доступ к свойствам пользователя Outlook из EWS

Я пытаюсь создать приложение, которое использует API EWS для доступа к контактам.

Мне нужно просмотреть одно из свойств пользователя Outlook в этом процессе, но я не понимаю, как получить его при использовании EWS. На данный момент только что попробовал...

service.Url = new Uri("https://url/ews/Exchange.asmx");
service.Credentials = new WebCredentials("credentials");
var results = service.FindItems(folderId, new ItemView(100));
foreach (var item in results)
{
     Contact contact = item as Contact;
     foreach (var prop in contact.ExtendedProperties)
     {
            Console.WriteLine(prop.Value.ToString());
     }
}

Который компилируется и выполняется без проблем, но для каждого контакта количество расширенных свойств равно 0, что в Outlook составляет около 30.

Итак, как я могу получить свойства, которые я ищу?

Просто к сведению. Я использую exhcnage 2007.

Спасибо.


person electricsheep    schedule 19.07.2011    source источник


Ответы (2)


Вам нужно определить свойства, которые вы хотите получить — EWS не позволяет вам перечислять свойства пользователя.

Свойства пользователя находятся в пространстве имен PublicStrings.

private static readonly ExtendedPropertyDefinition CustomProperty = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.PublicStrings, "MyCustomProperty", MapiPropertyType.String);

Затем вы можете использовать определение в запросе FindItems:

var items = service.FindItems(WellKnownFolderName.Inbox, new ItemView(100) { PropertySet =   new PropertySet(BasePropertySet.FirstClassProperties, CustomProperty)});
person Henning Krause    schedule 19.07.2011

У меня была такая же проблема, решил.

var customProp1 = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.PublicStrings,
                        "myCustomPropOne", MapiPropertyType.String);

var customProp2 = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.PublicStrings,
                      "myCustomPropTwo", MapiPropertyType.String);

var userFields = new ExtendedPropertyDefinition[] { customProp1, customProp2 };

var extendedPropertySet = new PropertySet(BasePropertySet.FirstClassProperties, userFields);

var contactItems = service.FindItems(WellKnownFolderName.Contacts, new ItemView(100)
            { PropertySet = new PropertySet(BasePropertySet.FirstClassProperties, extendedPropertySet) });
// Looping contacts
    foreach (Item item in contactItems){
        object firstProp;              
        if (item.TryGetProperty(customProp1, out firstProp) && firstProp != null)
        {
               var val = firstProp.ToString();
        }
        object secondProp;
        if (item.TryGetProperty(customProp2, out secondProp) && secondProp != null)
        {
               var val = secondProp.ToString();
        }
     } // loop ends

myCustomPropOne и myCustomPropTwo — это имена определяемых пользователем свойств, которые вы устанавливаете в Outlook/Editor. ref

person Baqer Naqvi    schedule 10.03.2017