我刚刚弄清楚如何设置标题(请参阅如何使用 EWS Java API(Exchange Web 服务)设置联系人标题?)。现在我正在尝试设置电子邮件 1 的显示名称。
如果我使用公开的 API Contact.getEmailAddresses().setEmailAddress(),显示名称会自动设置为与电子邮件地址相同(并且它会覆盖我的扩展属性)。
所以现在我正在尝试通过扩展属性设置完整的电子邮件信息。它几乎可以工作,除了当我查看通讯录时,名称和显示名称为空。
我有一种感觉,这与 Email1OriginalEntryId 属性有关,我不知道如何正确设置。
有任何想法吗?
我目前的尝试如下所示:
ExtendedPropertyDefinition propDef_PidLidEmail1DisplayName = new ExtendedPropertyDefinition(//
UUID.fromString("00062004-0000-0000-C000-000000000046"), 0x8080, MapiPropertyType.String);
ExtendedPropertyDefinition propDef_PidLidEmail1AddressType = new ExtendedPropertyDefinition(//
UUID.fromString("00062004-0000-0000-C000-000000000046"), 0x8082, MapiPropertyType.String);
ExtendedPropertyDefinition propDef_PidLidEmail1EmailAddress = new ExtendedPropertyDefinition(//
UUID.fromString("00062004-0000-0000-C000-000000000046"), 0x8083, MapiPropertyType.String);
ExtendedPropertyDefinition propDef_PidLidEmail1OriginalDisplayName = new ExtendedPropertyDefinition(//
UUID.fromString("00062004-0000-0000-C000-000000000046"), 0x8084, MapiPropertyType.String);
ExtendedPropertyDefinition propDef_PidLidEmail1OriginalEntryId = new ExtendedPropertyDefinition(//
UUID.fromString("00062004-0000-0000-C000-000000000046"), 0x8085, MapiPropertyType.Binary);
ExchangeService mailbox = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
mailbox.setUrl(new URL("https://remote.domain.com/EWS/exchange.asmx").toURI());
ExchangeCredentials credentials = new WebCredentials("user.name", "pw", "domain");
mailbox.setCredentials(credentials);
Contact c = new Contact(mailbox);
c.setGivenName("GivenName");
c.setSurname("Surname");
// c.getEmailAddresses().setEmailAddress(EmailAddressKey.EmailAddress1, new EmailAddress("AB12@B12.com"));
c.setExtendedProperty(propDef_PidLidEmail1AddressType, "SMTP");
c.setExtendedProperty(propDef_PidLidEmail1EmailAddress, "A12@B12.com");
c.setExtendedProperty(propDef_PidLidEmail1OriginalDisplayName, "A12@B12.com");
c.setExtendedProperty(propDef_PidLidEmail1DisplayName, "A12 B12 (A12@B12.com)");
// c.setExtendedProperty(propDef_PidLidEmail1OriginalEntryId, ???);
c.save(WellKnownFolderName.Contacts);