4

我正在尝试使用 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();

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

任何想法我做错了什么?

亲切的问候

沃尔克马尔

4

1 回答 1

8

简答

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

ExtendedPropertyDefinition oTitleProp = new ExtendedPropertyDefinition(
    0x3A45,
    MapiPropertyType.String);

更长的答案

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

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

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

于 2011-02-11T12:32:06.643 回答