2011-07-19 61 views
2

我試圖創建一個使用EWS api訪問聯繫人的應用程序。從EWS訪問Outlook用戶屬性

我需要看看這個過程中的一個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()); 
    } 
} 

來編譯和沒有問題執行,但每個聯繫人的ExtendedProperties計數爲0,在Outlook中的約30

所以,我怎麼能得到屬性我在找?

只是一個供參考。我使用exhcnage 2007.

謝謝。

回答

7

您需要定義想要獲取的屬性 - EWS不允許枚舉用戶屬性。

Userproperties位於名稱空間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)}); 
0

我有同樣的問題,得到解決。

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 /編輯器中設置用戶自定義屬性的名稱。 ref