2012-12-18 26 views
0

我正在使用C#和Exchange Web服务API,并且一直无法找到使用名为Account的扩展属性检索联系人的方法。我们使用这个字段来保存一个整数,这对于内部开发的系统是有意义的。在WebDAV下,我们知道如何检索联系人,但需要一些帮助(希望是一个简短的示例或代码片段)来演示如何执行此操作。Exchange Web Services - 如何使用帐户扩展属性检索联系人

回答

0

我已经使用约会的扩展属性,所以也许他们工作在与联系人相同的概念。

这个想法是为约会提供指导,因为他们的本地ID不是固定的。

private static readonly PropertyDefinitionBase AppointementIdPropertyDefinition = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.PublicStrings, "AppointmentID", MapiPropertyType.String); 
public static PropertySet PropertySet = new PropertySet(BasePropertySet.FirstClassProperties, AppointementIdPropertyDefinition); 


//Setting the property for the appointment 
public static void SetGuidForAppointement(Appointment appointment) 
{ 
    try 
    { 
     appointment.SetExtendedProperty((ExtendedPropertyDefinition)AppointementIdPropertyDefinition, Guid.NewGuid().ToString()); 
     appointment.Update(ConflictResolutionMode.AlwaysOverwrite, SendInvitationsOrCancellationsMode.SendToNone); 
    } 
    catch (Exception ex) 
    { 
     // logging the exception 
    } 
} 

//Getting the property for the appointment 
public static string GetGuidForAppointement(Appointment appointment) 
{ 
    var result = ""; 
    try 
    { 
     appointment.Load(PropertySet); 
     foreach (var extendedProperty in appointment.ExtendedProperties) 
     { 
      if (extendedProperty.PropertyDefinition.Name == "AppointmentID") 
      { 
       result = extendedProperty.Value.ToString(); 
      } 
     } 
    } 
    catch (Exception ex) 
    { 
    // logging the exception 
    } 
    return result; 
} 
0

不知道,如果你仍然需要这个......但我只是解决了一些接近自己:

answer here应该在你想要的球场。我在这里使用布尔值以及帐户:

ExchangeService service = this.GetService(); // my method to build service 
FolderId folderID = GetPublicFolderID(service, "My Address Book"); 
ContactsFolder folder = ContactsFolder.Bind(service, folderID); 
int folderCount = folder.TotalCount; 

var guid  = DefaultExtendedPropertySet.PublicStrings; 
var epdAccount = new ExtendedPropertyDefinition(0x3A00, MapiPropertyType.String); 
var epdCID  = new ExtendedPropertyDefinition(0x3A4A, MapiPropertyType.String); 
var epdCBLN = new ExtendedPropertyDefinition(guid, "CustomBln", MapiPropertyType.Boolean); 
var epdCDBL = new ExtendedPropertyDefinition(guid, "CustomDbl", MapiPropertyType.Double); 

var view = new ItemView(folderCount); 
view.PropertySet = new PropertySet(BasePropertySet.FirstClassProperties); 
view.PropertySet.Add(epdAccount); 
view.PropertySet.Add(epdCID); 
view.PropertySet.Add(epdCBLN); 
view.PropertySet.Add(epdCDBL); 

//var searchOrFilterCollection = new List<SearchFilter>(); 
//searchOrFilterCollection.Add(new SearchFilter.IsEqualTo(epdCBLN, true)); 
//searchOrFilterCollection.Add(new SearchFilter.IsEqualTo(epdAccount, "user")); 
//var filter = new SearchFilter.SearchFilterCollection(LogicalOperator.And, searchOrFilterCollection); 

var filter = new SearchFilter.IsEqualTo(epdAccount, "user"); 
var contacts = service.FindItems(folderID, filter, view); 

foreach (Contact contact in contacts) 
{ 
    string Account; 
    int CID; 
    bool CBLN; 
    double CDBL; 

    contact.GetLoadedPropertyDefinitions(); 
    contact.TryGetProperty(epdAccuont, out Account); 
    contact.TryGetProperty(epdCID, out CID); 
    contact.TryGetProperty(epdCBLN, out CBLN); 
    contact.TryGetProperty(epdCDBL, out CDBL); 

    Console.WriteLine(String.Format("{0, -20} - {1} - {2} - {3} - {4}" 
        , contact.DisplayName 
        , contact.EmailAddresses[EmailAddressKey.EmailAddress1] 
        , Account 
        , CID 
        , CBLN 
        , CDBL 
       )); 
} 
相关问题