Question

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 INBOX (or its folders & contents) but am having great difficulty finding information on how to access (and ultimately parse/read) a shared mailbox.

Was it helpful?

Solution

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

OTHER TIPS

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.

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top