从EWS访问Outlook用户属性

ele*_*eep 2 c# outlook exchange-server-2007 exchangewebservices

我正在尝试创建一个使用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(100));
foreach (var item in results)
{
     Contact contact = item as Contact;
     foreach (var prop in contact.ExtendedProperties)
     {
            Console.WriteLine(prop.Value.ToString());
     }
}
Run Code Online (Sandbox Code Playgroud)

哪个编译并执行没有问题,但对于每个联系人,ExtendedProperties计数为0,在outlook中约为30.

那么我怎样才能获得我正在寻找的属性?

只是一个FYI.我正在使用exhcnage 2007.

谢谢.

Hen*_*use 7

您需要定义要获取的属性 - EWS不允许您枚举用户属性.

Userproperties位于名称空间PublicStrings中.

private static readonly ExtendedPropertyDefinition CustomProperty = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.PublicStrings, "MyCustomProperty", MapiPropertyType.String);
Run Code Online (Sandbox Code Playgroud)

然后,您可以在FindItems请求中使用该定义:

var items = service.FindItems(WellKnownFolderName.Inbox, new ItemView(100) { PropertySet =   new PropertySet(BasePropertySet.FirstClassProperties, CustomProperty)});
Run Code Online (Sandbox Code Playgroud)