#jakarta-mail
#джакарта-почта
Вопрос:
Я всегда получаю сообщение об ошибке:
javax.mail.NoSuchProviderException: Invalid protocol: null
at javax.mail.Session.getProvider(Session.java:525)
at javax.mail.Session.getStore(Session.java:620)
at javax.mail.Session.getStore(Session.java:600)
at javax.mail.Session.getStore(Session.java:586)
at de.jankrb.mailcrawler.methods.CheckAll.check(CheckAll.java:23)
at de.jankrb.mailcrawler.Launcher.main(Launcher.java:10)
Я ничего не пробовал, потому что ничего не нашел в Интернете.
Это создает проблемы:
Properties properties = new Properties();
properties.put("mail.transport.protocol", "smtp");
properties.put("mail.smtp.host", HOST);
properties.put("mail.user", USER);
properties.put("mail.password", PASS);
Session session = Session.getDefaultInstance(properties);
Store store = session.getStore();
store.connect(HOST, USER, PASS);
Launcher.java: 10 просто использует метод, внутри которого находится приведенный выше фрагмент.
Комментарии:
1. Каждое решение, которое я нашел, вообще не работало.
2. Как вы создали и настроили свое приложение? Какой jar-файл JavaMail вы используете?
3. @BillShannon Я использую шаблон Java JVM по умолчанию для IntelliJ (JetBrains), JDK 8 и загрузил последнюю версию с веб-сайта JavaMail
4. Я не знаю, что такое «шаблон Java JVM по умолчанию для IntelliJ». Это переупаковка файлов класса JavaMail внутри файла jar или вашего приложения?
Ответ №1:
Properties properties = new Properties();
properties.put("mail.store.protocol", "pop3");
properties.put("mail.pop3.host", HOST);
properties.put("mail.pop3.port", "995");
properties.put("mail.pop3.ssl.trust", "true");
//properties.put("mail.pop3.starttls.enable", "true");
Session session = Session.getDefaultInstance(properties);
Store store = session.getStore("pop3s");
store.connect(HOST, USER, PASS);
Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_ONLY);
Это код, который я использую, и он работает. В любом случае спасибо
Комментарии:
1. у вас была ошибка в вашей конфигурации. Это должно быть
properties.put("mail.pop3.ssl.trust", "true");
?2. О, конечно, я отредактирую свой ответ, в моем коде это правильно.