【发布时间】:2018-08-24 15:37:08
【问题描述】:
我正在尝试通过删除 EmailAddress1 和 BusinessPhone 来更新 EWS 联系人对象。
我正在参考这篇 MSDN 博客文章,其中详细介绍了如何处理电子邮件。 https://blogs.msdn.microsoft.com/emeamsgdev/2012/05/17/ews-managed-api-how-to-remove-email1-email2-email3-from-a-contact/
我想我已经大致弄清楚了,但我不知道如何为一组 ExtendedPropertyDefinition 创建 ExtendedPropertyDefinition。这是博客文章中的 C# 代码。
ExtendedPropertyDefinition[] Email1PropertyGroup = new
ExtendedPropertyDefinition[5]{ PidLidEmail1DisplayName,
PidLidEmail1AddressType,
PidLidEmail1Address,
PidLidEmail1OriginalDisplayName,
PidLidEmail1OriginalEntryId};
这是我对 javascript 等效项的尝试
const emailDisplayName = new ews.ExtendedPropertyDefinition(ews.DefaultExtendedPropertySet.Address, 0x8080, ews.MapiPropertyType.String);
const emailAddressType = new ews.ExtendedPropertyDefinition(ews.DefaultExtendedPropertySet.Address, 0x8082, ews.MapiPropertyType.String);
const emailAddress = new ews.ExtendedPropertyDefinition(ews.DefaultExtendedPropertySet.Address, 0x8083, ews.MapiPropertyType.String);
const emailOriginalDisplayName = new ews.ExtendedPropertyDefinition(ews.DefaultExtendedPropertySet.Address, 0x8084, ews.MapiPropertyType.String);
const emailOriginalEntryId = new ews.ExtendedPropertyDefinition(ews.DefaultExtendedPropertySet.Address, 0x8085, ews.MapiPropertyType.Binary);
const emailPropertyGroup =
new ews.ExtendedPropertyDefinition([emailDisplayName,
emailAddressType,
emailAddress,
emailOriginalDisplayName,
emailOriginalEntryId]);
const updatedContact =
ews.Contact.Bind(window.exchangeService,
ewsId,
emailPropertyGroup).then(response => {
但是当我在我的 .Bind 中传递这个 emailPropertyGroup 时,我得到了一个异常。如果我没有通过 emailPropertyGroup,我可以更新我的联系人,并且我只删除了 Surname、GivenName 等内容。
在成功的绑定解决方案中,我将使用此代码删除这些属性。
response.RemoveExtendedProperty(emailDisplayName);
response.RemoveExtendedProperty(emailAddressType);
response.RemoveExtendedProperty(emailAddress);
response.RemoveExtendedProperty(emailOriginalDisplayName);
response.RemoveExtendedProperty(emailOriginalEntryId);
但是,我从来没有访问过这个代码,因为我一绑定就得到一个异常。这是一个例外。
debuggability.js:870 [31mUnhandled rejection TypeError: this.PropertySet.Contains is not a function
at GetItemRequest.get [as EmitTimeZoneHeader] (https://sr1.genband.com/genlync/bundle-electron.js:136846:37)
at GetItemRequest../vendor/ews-javascript-api/js/Core/Requests/ServiceRequestBase.js.ServiceRequestBase.WriteToXml (https://sr1.genband.com/genlync/bundle-electron.js:140968:111)
at GetItemRequest../vendor/ews-javascript-api/js/Core/Requests/ServiceRequestBase.js.ServiceRequestBase.EmitRequest (https://sr1.genband.com/genlync/bundle-electron.js:140642:18)
at GetItemRequest../vendor/ews-javascript-api/js/Core/Requests/ServiceRequestBase.js.ServiceRequestBase.BuildXHR (https://sr1.genband.com/genlync/bundle-electron.js:140608:14)
at https://sr1.genband.com/genlync/bundle-electron.js:141665:33
at Promise._execute (https://sr1.genband.com/genlync/bundle-electron.js:2238:9)
at Promise._resolveFromExecutor (https://sr1.genband.com/genlync/bundle-electron.js:4593:18)
at new Promise (https://sr1.genband.com/genlync/bundle-electron.js:4189:10)
at GetItemRequest../vendor/ews-javascript-api/js/Core/Requests/SimpleServiceRequestBase.js.SimpleServiceRequestBase.InternalExecute (https://sr1.genband.com/genlync/bundle-electron.js:141664:16)
at https://sr1.genband.com/genlync/bundle-electron.js:139547:19
at Promise._execute (https://sr1.genband.com/genlync/bundle-electron.js:2238:9)
at Promise._resolveFromExecutor (https://sr1.genband.com/genlync/bundle-electron.js:4593:18)
at new Promise (https://sr1.genband.com/genlync/bundle-electron.js:4189:10)
at GetItemRequest../vendor/ews-javascript-api/js/Core/Requests/MultiResponseServiceRequest.js.MultiResponseServiceRequest.Execute (https://sr1.genband.com/genlync/bundle-electron.js:139546:16)
at ExchangeService../vendor/ews-javascript-api/js/Core/ExchangeService.js.ExchangeService.InternalBindToItems (https://sr1.genband.com/genlync/bundle-electron.js:128751:24)
at ExchangeService../vendor/ews-javascript-api/js/Core/ExchangeService.js.ExchangeService.BindToItem (https://sr1.genband.com/genlync/bundle-electron.js:128533:21)
at Function../vendor/ews-javascript-api/js/Core/ServiceObjects/Items/Contact.js.Contact.Bind (https://sr1.genband.com/genlync/bundle-electron.js:150740:24)
at Object.updateContact [as @@ews/update-addressbook] (https://sr1.genband.com/genlync/bundle-electron.js:90551:90)
at https://sr1.genband.com/genlync/bundle-electron.js:90889:46
at https://sr1.genband.com/genlync/bundle-electron.js:91653:24
at https://sr1.genband.com/genlync/bundle-electron.js:189169:291
at https://sr1.genband.com/genlync/bundle-electron.js:90997:24
at ContactsContainer._handleUpdateContact (https://sr1.genband.com/genlync/bundle-electron.js:71762:17)
at ContactsView._handleEditContactModalSave (https://sr1.genband.com/genlync/bundle-electron.js:72656:17)
at ModalCreateEditPABContactView.<anonymous> (https://sr1.genband.com/genlync/bundle-electron.js:81774:28)
at commitCallbacks (https://sr1.genband.com/genlync/bundle-electron.js:44319:15)
at commitLifeCycles (https://sr1.genband.com/genlync/bundle-electron.js:46940:13)
at commitAllLifeCycles (https://sr1.genband.com/genlync/bundle-electron.js:48102:9)
at HTMLUnknownElement.callCallback (https://sr1.genband.com/genlync/bundle-electron.js:38698:14)
at Object.invokeGuardedCallbackDev (https://sr1.genband.com/genlync/bundle-electron.js:38737:16)
at invokeGuardedCallback (https://sr1.genband.com/genlync/bundle-electron.js:38594:27)
at commitRoot (https://sr1.genband.com/genlync/bundle-electron.js:48206:9)
at performWorkOnRoot (https://sr1.genband.com/genlync/bundle-electron.js:49173:42)
at performWork (https://sr1.genband.com/genlync/bundle-electron.js:49123:7)
at batchedUpdates (https://sr1.genband.com/genlync/bundle-electron.js:49242:9)
at batchedUpdates (https://sr1.genband.com/genlync/bundle-electron.js:40486:12)
at dispatchEvent (https://sr1.genband.com/genlync/bundle-electron.js:41577:5)[0m
另外,是否为每个扩展属性 ID 定义了常量?博文只传入原始的十六进制值,例如 0x8080。这些是否记录在任何地方?
【问题讨论】: