2011-07-19 15 views
2

EWS APIを使用して連絡先にアクセスするアプリケーションを作成しようとしています。EWSからOutlookユーザーのプロパティにアクセス

このプロセスでOutlookユーザープロパティの1つを調べる必要がありますが、EWSを使用して取得する方法はわかりません。ちょうどしようとした瞬間アイブ...でコンパイルし、問題なく実行されますが、すべての連絡先のExtendedPropertiesカウント

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()); 
    } 
} 

は見通しで、そのおよそ30

だから私はどのように取得することができている0であります私が探している物件?

私はexhcnage 2007を使用しています。

ありがとう。

答えて

7

取得するプロパティを定義する必要があります.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)}); 
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はあなたが見通し/エディタで設定したユーザ定義されたプロパティの名前です。 ref

関連する問題