NoSuchProvider JavaX Mail

#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. О, конечно, я отредактирую свой ответ, в моем коде это правильно.