Почта Java: Никакой поставщик для smtp

Я использую JavaMail, чтобы сделать простое приложение, которое посылает электронное письмо, когда он находит некоторые файлы в каталоге. Мне удалось получить его, работал от Eclipse. Я Запускаю приложение, и оно послало электронное письмо без ошибок.

Но, когда я создал банку и выполнил ее, она перестала работать в электронном письме, отправляющем часть. Это дает это исключение:

javax.mail.NoSuchProviderException: No provider for smtp
 at javax.mail.Session.getProvider(Session.java:460)
 at javax.mail.Session.getTransport(Session.java:655)
 at javax.mail.Session.getTransport(Session.java:636)
 at main.java.util.MailManager.sendMail(MailManager.java:69)
 at main.java.DownloadsMail.composeAndSendMail(DownloadsMail.java:16)
 at main.java.DownloadsController.checkDownloads(DownloadsController.java:51)
 at main.java.MainDownloadsController.run(MainDownloadsController.java:26)
 at java.lang.Thread.run(Unknown Source)

Я пользуюсь библиотекой в этом методе:

public static boolean sendMail(String subject, String text) {

    noExceptionsThrown = true;
    try {
        loadProperties();
    } catch (IOException e1) {
        System.out.println("Problem encountered while loading properties");
        e1.printStackTrace();
        noExceptionsThrown = false;
    }

    Properties mailProps = new Properties();

    String host = "mail.smtp.host";
    mailProps.setProperty(host, connectionProps.getProperty(host));

    String tls = "mail.smtp.starttls.enable";
    mailProps.setProperty(tls, connectionProps.getProperty(tls));

    String port = "mail.smtp.port";
    mailProps.setProperty(port, connectionProps.getProperty(port));

    String user = "mail.smtp.user";
    mailProps.setProperty(user, connectionProps.getProperty(user));

    String auth = "mail.smtp.auth";
    mailProps.setProperty(auth, connectionProps.getProperty(auth));

    Session session = Session.getDefaultInstance(mailProps);
    //session.setDebug(true);

    MimeMessage message = new MimeMessage(session);

    try {
        message.setFrom(new InternetAddress(messageProps.getProperty("from")));

        message.addRecipient(Message.RecipientType.TO, new InternetAddress(
                messageProps.getProperty("to")));

        message.setSubject(subject);
        message.setText(text);
        Transport t = session.getTransport("smtp");
        try {
            t.connect(connectionProps.getProperty("user"), passwordProps
                    .getProperty("password"));
            t.sendMessage(message, message.getAllRecipients());
        } catch (Exception e) {
            System.out.println("Error encountered while sending the email");
            e.printStackTrace();
            noExceptionsThrown = false;
        } finally {
            t.close();
        }
    } catch (Exception e) {
        System.out.println("Error encountered while creating the message");
        e.printStackTrace();
        noExceptionsThrown = false;
    }
    return noExceptionsThrown;
}

Я загружаю эти значения из файлов свойств.

mail.smtp.host=smtp.gmail.com

mail.smtp.starttls.enable=true

mail.smtp.port=587

mail.smtp.auth=true

Я попытался изменить хост ssl://smtp.gmail.com, порт на 465 (только для попытки чего-то другого), но это не работает также. Так или иначе, если это хорошо работает от Eclipse с исходными параметрами, я предполагаю, что значения правильны, но проблема создает банку. Я не знаю очень много о возможных результатах или изменениях при создании банки. Разве библиотеки JavaMail могли некоторым образом пойти не так, как надо, когда банка создается?

У Вас есть какие-либо идеи?

9
задан ROMANIA_engineer 4 February 2016 в 07:38
поделиться

1 ответ

Поддерживающие jar-файлы: mail.jar и activate.jar отсутствуют в пути к классам. Когда вы создаете свою банку, вам необходимо включить их в свой путь к классам.

10
ответ дан 4 December 2019 в 11:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: