exchangewebservices - How to set the contact Email1DisplayName using the EWS Java API (Exchange Web Service)? -
i figured out how set title (see how set contact title using ews java api (exchange web service)?). trying set email 1 display name.
if use exposed api contact.getemailaddresses().setemailaddress(), display name automatically set same email address (and overrides extended properties).
so trying set complete email information via extended properties. works, except when @ address book, name , display name empty.
i have feeling related email1originalentryid property, not know how set correctly.
any ideas?
my current attempt looks this:
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);
hard believe, after week of fighting this, figured out. tested on exchange 2007.
note works if set every single extended property in example , not use contact.getemailaddresses().setemailaddress().
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); string first = "first"; string last = "last"; string first_last = first + " " + last; // "first last" string email = "first.last@email.com"; string display_name = first + " " + last + " (" + email + ")"; // "first last (first.last@email.com)" contact c = new contact(mailbox); c.setgivenname(first); c.setsurname(last); c.setfileas(first_last); // don't use // c.getemailaddresses().setemailaddress(emailaddresskey.emailaddress1, new emailaddress(email)); // address book name (seem trigger whole address book functionality) c.setsubject(first_last); // address book email address c.setextendedproperty(propdef_pidlidemail1originaldisplayname, email); // contact , address book display name c.setextendedproperty(propdef_pidlidemail1displayname, display_name); c.setextendedproperty(propdef_pidlidemail1addresstype, "smtp"); // constant c.setextendedproperty(propdef_pidlidemail1emailaddress, email); // not needed after all, exchange sets automatically // c.setextendedproperty(propdef_pidlidemail1originalentryid, ???); c.save(wellknownfoldername.contacts); for(item item : mailbox.finditems(wellknownfoldername.contacts, new itemview(1000))) { contact result = (contact) item; propertyset propertyset = new propertyset(basepropertyset.firstclassproperties); propertyset.add(propdef_pidlidemail1addresstype); propertyset.add(propdef_pidlidemail1emailaddress); propertyset.add(propdef_pidlidemail1originaldisplayname); propertyset.add(propdef_pidlidemail1displayname); propertyset.add(propdef_pidlidemail1originalentryid); result = contact.bind(mailbox, result.getid(), propertyset); logger.info("count: " + result.getextendedproperties().getcount()); for(extendedproperty p : result.getextendedproperties()) { logger.info(p.tostring()); } }
Comments
Post a Comment