如何将CountryOrRegion保存到与Exchange WebService的联系人

时间:2015-02-27 10:22:45

标签: .net exchangewebservices

下次我们将使用交换服务器,所以我想重新编码我们的联系人导入。

旧版本使用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这样的属性,但这不存在。

感谢您的帮助!

2 个答案:

答案 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

这里[]表示如果该元素的值为空,则将省略括号内的指定元素。