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 で別のオーバーロードを使用しようとしましたが、プロパティを削除した結果は変わりませんでした。コンストラクターの 2 つのシグネチャの違いを理解しているかどうかはわかりません。
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);
ブルート フォースによる回避策
連絡先の完全なコピー (タイトルなし) を取得し、元の連絡先を削除することもできると思いますが、それは少しやりすぎで、おそらく他のバグを引き起こす可能性があります。