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