JavaMail MimeMessage не будет отправлять, когда Runnable jar выполняется на другом компьютере - PullRequest
0 голосов
/ 31 августа 2018

У меня довольно простое приложение JavaMail. Он отлично работает, когда я запускаю его в Eclipse или экспортирую как исполняемый файл. Когда я пытаюсь запустить его на другом компьютере, электронное письмо не отправляется и не выдается никаких исключений. В коде у меня есть несколько println (), чтобы увидеть, куда в программе он попадает.

Достигается "--- 2 ---", поэтому я предполагаю, что что-то не так с объектом MimeMessage или объектом Session при перемещении на другой компьютер.

Есть идеи, почему эта часть программы будет работать на одном компьютере, а не на другом?

try {

Properties properties = new Properties();
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.starttls.enable", "true");
properties.put("mail.smtp.host", "smtp-mail.outlook.com");
properties.put("mail.smtp.port", "587");

Session session = Session.getInstance(properties,
    new javax.mail.Authenticator() {
        protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
        return new javax.mail.PasswordAuthentication(username, password);
    }
});

System.out.println("--- 1 ---");

    System.out.println("--- 2 ---");

    MimeMessage message = new MimeMessage(session);
    System.out.println("--- 3 ---");

    message.setFrom(new InternetAddress(from));
    System.out.println("--- 4 ---");

    message.setRecipients(Message.RecipientType.TO, addressList);
    System.out.println("--- 5 ---");

    message.setSubject(subject + " " + LocalDateTime.now().format(mainDateFormatter));
    System.out.println("--- 6 ---");
    System.out.println(message.getSubject());

    message.setContent(html, "text/html");

    System.out.println("--- 7 ---");
    Transport.send(message);

    System.out.println("Done");

    } catch (Exception e) {     
        System.out.println(e.toString());
       throw new RuntimeException(e);
    }

1 Ответ

0 голосов
/ 05 сентября 2018

Вы должны аутентифицировать почтовый сервер. Если вы используете свой собственный почтовый сервер, вы можете настроить его. Так что для этого не требуется аутентификация, но никто из поставщиков общедоступных услуг электронной почты не допустит этого, что, как я надеюсь, является очевидной причиной.

...