下次我们将使用交换服务器,所以我想重新编码我们的联系人导入。
旧版本使用Outlook.Interop库在已定义的文件夹中创建联系人:
Dim ci As ContactItem
ci = f.Items.Add(OlItemType.olContactItem)
ci.FirstName = ByNull(row("FirstName"))
ci.LastName = ByNull(row("LastName"))
ci.BusinessAddressCountry = ByNull(row("CountryName"))
ci.Save()
但现在,我想通过Exchange托管API保存联系人:
Dim c As New Contact(svc)
Dim pae As New PhysicalAddressEntry()
pae.Street = ByNull(row("BusinessAddressStreet"))
pae.PostalCode = ByNull(row("BusinessAddressPostalCode"))
pae.City = ByNull(row("BusinessAddressCity"))
pae.CountryOrRegion = ByNull(row("CountryName"))
c.PhysicalAddresses(PhysicalAddressKey.Business) = pae
c.PostalAddressIndex = PhysicalAddressIndex.Home 'fix, because it´s shown as business address
c.Save()
它工作正常,除了outlook中country / region列中显示的国家/地区,因为它是空的。 (Contacts->查看 - >列表)
截图: Outlook People
但是当我再次通过Outlook保存联系人时,该国家/地区会显示在该列中。
我搜索了一些像Contact.CountryOrRegion这样的属性,但这不存在。
感谢您的帮助!
答案 0 :(得分:0)
您还需要为此属性设置pidTagCountry扩展属性,以便在地址簿视图中显示https://msdn.microsoft.com/en-us/library/ee201020(v=exchg.80).aspx
例如
ExtendedPropertyDefinition PR_BUSINESS_ADDRESS_COUNTRY = new ExtendedPropertyDefinition(0x3A26, MapiPropertyType.String);
ContactObject.SetExtendedProperty(PR_BUSINESS_ADDRESS_COUNTRY, "Australia");
强类型属性仅设置此pidLidWorkAddress属性https://msdn.microsoft.com/en-us/library/ee178066(v=exchg.80).aspx
干杯 格伦
答案 1 :(得分:0)
网格上显示的地址/国家/地区/ zip(联系人 - >查看 - >列表)来自联系人的邮寄地址。您需要更新3个扩展属性才能将这3个字段同步到联系人的邮件地址:邮件地址,国家/地区和邮政编码。完整的代码段如下:
getClassData
这里[]表示如果该元素的值为空,则将省略括号内的指定元素。