I\'m trying to write an java application that will access a additional, shared mailbox to read emails and perform other activities. I have no problem reading my own
I am doing the following and it is working fine for me
properties = System.getProperties();
properties.setProperty("mail.imaps.auth.plain.disable", "true");
properties.setProperty("mail.imaps.auth.ntlm.disable", "true");
Session session = Session.getInstance(properties, null);
store = session.getStore("imaps");
store.connect("HOST", PORT, "DOMAIN\\USER\\SHAREDACCOUNT","pwd");
Here
DOMAIN\\USER\\SHAREDACCOUNT would be like this
suppose email account is tarun@abc.com then
abc\\tarun\\shared_MB
You also have to enter the password of tarun@abc.com account.
With the help from the other answers, I figured out following solution, that works for com.sun.mail:javax.mail:1.6.2
Properties props = new Properties();
props.setProperty("mail.imaps.auth.mechanisms", "LOGIN");
Session session = Session.getInstance(props);
Store store = session.getStore("imaps");
store.connect("outlook.office365.com", 993, "user@xyz.com\\shared_account_alias", "user_password");
With javax.mail:mail:1.4.7 following code works:
Properties props = new Properties();
props.setProperty("mail.imaps.auth.plain.disable", "true");
Session session = Session.getInstance(props);
Store store = session.getStore("imaps");
store.connect("outlook.office365.com", 993, "user@xyz.com\\shared_account_alias", "user_password");
shared_account_alias is NOT the email address.
Eventually I have found a more standard way of accessing the shared mailbox:
Properties props = new Properties();
props.setProperty("mail.imaps.sasl.enable", "true");
props.setProperty("mail.imaps.sasl.authorizationid", "shared_account_alias");
Session session = Session.getInstance(props);
Store store = session.getStore("imaps");
store.connect("outlook.office365.com", 993, "user@xyz.com", "user_password");
The solution given by Tarun works. But an important note use the alias of the shared account and not the actual email address of shared account. So the actual format is: store.connect(DOMAIN, "USER@xyz.com\SHARED_ACCOUNT_ALIAS","USER_PASSWORD");