javamail доступ к общему почтовому ящику

#java #jakarta-mail

#java #джакарта-почта

Вопрос:

Я пытаюсь написать Java-приложение, которое будет обращаться к дополнительному общему почтовому ящику для чтения электронных писем и выполнения других действий. У меня нет проблем с чтением моего собственного почтового ящика (или его папок и содержимого), но мне очень трудно найти информацию о том, как получить доступ (и, в конечном счете, проанализировать / прочитать) к общему почтовому ящику.

Комментарии:

1. какой почтовый протокол вы используете?

2. Если вы говорите об общих почтовых ящиках в Exchange, вы можете обнаружить, что JavaMail / IMAP не сильно помогут. Вероятно, вам нужно изучить возможность использования некоторых. СЕТЕВЫЕ библиотеки, работающие с Exchange.

Ответ №1:

С помощью других ответов я нашел следующее решение, которое работает для 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");
 

С javax.mail:mail:1.4.7 работает следующий код:

 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 НЕ является адресом электронной почты.

В конце концов я нашел более стандартный способ доступа к общему почтовому ящику:

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

Комментарии:

1. Последний способ с props.setProperty("mail.imaps.sasl.authorizationid", "shared_account_alias@xyz.com"); работает для меня.

2. Для меня props.setProperty("mail.imap.sasl.authorizationid", "shared_account_alias") и props.setProperty( "mail.imap.auth.ntlm.disable", "true" ) работал с WildFly 25.0.0 и jakarta.mail-1.6.7 (с использованием STARTTLS).

Ответ №2:

Я делаю следующее, и у меня все работает нормально

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

Здесь
ДОМЕН \ ПОЛЬЗОВАТЕЛЬ \ SHAREDACCOUNT будет выглядеть следующим образом
предположим, учетная запись электронной почты tarun@abc.com затем
abc \ tarun \ shared_MB

Вы также должны ввести пароль tarun@abc.com учетная запись.

Ответ №3:

Решение, предложенное Tarun, работает. Но важное замечание используйте псевдоним общей учетной записи, а не фактический адрес электронной почты общей учетной записи. Таким образом, фактический формат: store.connect(ДОМЕН, «USER@xyz.comSHARED_ACCOUNT_ALIAS «,»USER_PASSWORD»);