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); 

enter image description here

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());   } } 

enter image description here

enter image description here


Comments

Popular posts from this blog

blackberry 10 - how to add multiple markers on the google map just by url? -

php - guestbook returning database data to flash -

delphi - Dynamic file type icon -