C# 从EWS访问Outlook用户属性
我正在尝试创建一个使用EWS api访问联系人的应用程序 在此过程中,我需要查看outlook用户属性之一,但在使用EWS时我看不到如何获取它。此刻我只是试着C# 从EWS访问Outlook用户属性,c#,outlook,exchangewebservices,exchange-server-2007,C#,Outlook,Exchangewebservices,Exchange Server 2007,我正在尝试创建一个使用EWS api访问联系人的应用程序 在此过程中,我需要查看outlook用户属性之一,但在使用EWS时我看不到如何获取它。此刻我只是试着 service.Url = new Uri("https://url/ews/Exchange.asmx"); service.Credentials = new WebCredentials("credentials"); var results = service.FindItems(folderId, new ItemView(10
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
谢谢。您需要定义要获取的属性-EWS不允许您枚举用户属性 Userproperties位于命名空间PublicString中
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)});
我也有同样的问题,解决了
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中设置的用户定义属性的名称