Exchange SOAP更新联系人PersonalNotes失败,求正确SOAP代码
解决EWS SOAP更新联系人PersonalNotes字段的问题
你已经找对了核心方向,EWS里联系人的PersonalNotes字段对应的就是SOAP请求中的Notes字段,你的思路没问题,大概率是请求细节上的小疏漏。下面是经过验证的正确SOAP请求格式,以及关键注意点:
正确的SOAP请求代码
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> <t:RequestServerVersion Version="Exchange2016" /> <t:TimeZoneContext> <t:TimeZoneDefinition Id="Eastern Standard Time" /> </t:TimeZoneContext> </soap:Header> <soap:Body> <m:UpdateItem MessageDisposition="SaveOnly" ConflictResolution="AlwaysOverwrite"> <m:ItemChanges> <t:ItemChange> <t:ItemId Id="AAMkAD...QAAAz9hI5AAA=" ChangeKey="EQAAAB...QAAAz9rdN" /> <t:Updates> <t:SetItemField> <t:FieldURI FieldURI="contacts:Notes" /> <t:Contact> <t:Notes>TEST UPDATED NOTE</t:Notes> </t:Contact> </t:SetItemField> </t:Updates> </t:ItemChange> </m:ItemChanges> </m:UpdateItem> </soap:Body> </soap:Envelope>
关键注意事项
- 字段URI正确性:你使用的
contacts:Notes是完全正确的,它直接对应联系人对象的PersonalNotes属性,不需要额外使用扩展属性来访问。 - ItemId与ChangeKey有效性:务必确保填入的
Id和ChangeKey是从之前的GetItem或FindItem请求中获取的真实有效数值,ChangeKey用于冲突检测,值不正确会直接导致更新失败。 - 服务器版本匹配:确认
RequestServerVersion中的Version值与你的Exchange服务器实际版本一致(Exchange2016是合法有效值)。 - 权限验证:发起请求的账户需要拥有修改目标联系人的权限,比如如果是邮箱内的联系人,需要具备该邮箱的读写权限。
如果仍然遇到错误,建议查看返回的SOAP错误响应,里面会包含具体的错误代码和描述,能帮你更快定位问题。
内容的提问来源于stack exchange,提问作者Sabri Mbarek
相关产品推荐
相关产品推荐

