如何使用Exchange Web服务托管API设置联系人标题

Vol*_*igo 4 exchange-server exchangewebservices ews-managed-api

我正在尝试使用EWS API创建新联系人.除了联系人标题属性,我可以设置我需要的所有值.我试过这段代码:

oContact = new Contact(oService);
oContact.GivenName = "John";
oContact.Surname = "Doe";
oContact.Displayname = oContact.Surname;

// set the title property as extended property
// reference: http://msdn.microsoft.com/en-us/library/gg274394.aspx
ExtendedPropertyDefinition oTitleProp = new ExtendedPropertyDefinition(
  new Guid("{00062004-0000-0000-C000-000000000046}"),
  0x3A45,
  MapiPropertyType.String);
oContact.SetExtendedProperty(oTitleProp, "Mr.");

oContact.Save();
Run Code Online (Sandbox Code Playgroud)

我没有收到错误但是当我检查outlook 2010中的标题字段时,它是空的.我正在使用Exchange 2010.

我做错了什么想法?

亲切的问候

福尔克马尔

Amy*_*y T 7

简答

在创建扩展属性定义时,请不要使用您指定的构造函数,而不是上面的代码propertySetId.相反,构造它像这样:

ExtendedPropertyDefinition oTitleProp = new ExtendedPropertyDefinition(
    0x3A45,
    MapiPropertyType.String);
Run Code Online (Sandbox Code Playgroud)

更长的答案

你从微软那里得到的参考很有意思.通过阅读有关内部Microsoft Exchange Server 2007 Web服务中的扩展特性的章节,我一直认为对于不在自定义范围内的扩展属性(低于0x8000的那些),在引用它们时你会省略propertySetId,所以有趣的是那个页面,微软似乎暗示你会使用它.

对于它的价值,有一个免费提供的附录(附录C)内部Microsoft Exchange Server 2007 Web服务,它还记录了http://www.microsoft.com/mspress/companion/9780735623927/上的扩展属性,可能比这更清晰Microsoft页面何时使用propertySetId以及何时不使用.

还有一个更准确的属性列表及其相应的属性集在http://msdn.microsoft.com/en-us/library/cc433490(EXCHG.80).aspx