如何使用Microsoft';从联系人处获取/设置扩展属性;s EWS API
本文关键字:扩展 设置 属性 API EWS 获取 Microsoft 何使用 联系人 | 更新日期: 2023-09-27 18:23:55
我认为我正确地创建了它,如下所示。c是联系人,考虑到EWS提供的ItemId不是静态的,我只是想存储一个唯一的标识符。。。
propertySetId = System.Guid.NewGuid();
// Create a definition for the extended property.
ExtendedPropertyDefinition extendedPropertyDefinition = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.Common, "itemGUID", MapiPropertyType.String);
c.SetExtendedProperty(extendedPropertyDefinition, propertySetId.ToString());
c.Update(ConflictResolutionMode.AlwaysOverwrite);
当我试图在基于其他东西(比如名字)搜索联系人时将其撤回时,我会返回一个null。我正试图通过以下方式获取价值:
foreach (Item c in findResults.Items)
{
foreach(ExtendedProperty extendedProperty in c.ExtendedProperties)
{
if(extendedProperty.PropertyDefinition.Name == "itemGUID")
{
results[i] = extendedProperty.Value.ToString();
}
}
}
编辑:findResults 代码
List<SearchFilter> searchFilters = new List<SearchFilter>();
searchFilters.Add(new SearchFilter.IsEqualTo(itemGUID, value));
//can be more filters here depending on situation
SearchFilter filter = new SearchFilter.SearchFilterCollection(LogicalOperator.And, searchFilters.ToArray());
findResults = service.FindItems(WellKnownFolderName.Contacts, filter, view);
当您使用FindItems
进行搜索时,您需要在ItemView
中分配PropertySet
来告诉EWS要包括哪些属性。如果你不把它包括在ItemView
中,它将无法阅读。另一种方法是使用Contact.Bind
并为每个有问题的联系人请求属性(更多的服务请求,但有时是必要的)。
有关在EWS中使用扩展特性的完整示例,请参见使用EWS查看扩展特性。
方法1:检索所有联系人的扩展属性
ExtendedPropertyDefinition propDef = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.Common, "itemGUID", MapiPropertyType.String);
ItemView view = new ItemView(50) { PropertySet = new PropertySet(propDef) };
方法2:如果您有联系人ID,则一次绑定一个联系人
ExtendedPropertyDefinition propDef = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.Common, "itemGUID", MapiPropertyType.String);
Contact contact = Contact.Bind(service, contactID, new PropertySet(propDef));