使用 EWS 托管 api v1.1,我可以成功地将联系人“标题”或敬语(如果您愿意)保存/设置为非空值,但我不知道如何删除或将其设置回空字符串/空。
我尝试设置一个空值,并尝试删除扩展属性。这是相关代码。
var titleDef = new ExtendedPropertyDefinition(0x3A45, MapiPropertyType.String);
// works when set to a non-empty string value
ewsContact.SetExtendedProperty(titleDef, "Mr.");
// throws null argument exception when set to String.Empty or null
ewsContact.SetExtendedProperty(propDefinition, String.Empty);
// isRemoved is equal to false and the value doesn't change
var isRemoved = ewsContact.RemoveExtendedProperty(titleDef);
我也尝试在 ExtendedPropertyDefinition 上使用不同的重载,如这个非常相似的问题中所述,但它并没有改变我删除属性的最终结果。我不确定我是否理解构造函数的两个签名的区别。
var titleDef = new ExtendedPropertyDefinition(new Guid("{00062004-0000-0000-C000-000000000046}"), 0x3A45, MapiPropertyType.String);
// isRemoved is equal to false and the value doesn't change
var isRemoved = ewsContact.RemoveExtendedProperty(titleDef);
蛮力解决方法
我想我可以获取联系人的完整副本(没有标题)并删除原件,但这似乎有点过头了,可能会导致其他错误。