繁体   English   中英

当在另一台计算机上执行Runnable jar时,JavaMail MimeMessage将不会发送

[英]JavaMail MimeMessage wont send when Runnable jar is executed on a different computer

我有一个非常简单的JavaMail应用程序。 当我在Eclipse中运行它或将其导出为可运行的jar时,它工作得很好。 当我尝试在其他计算机上运行它时,不会发送电子邮件,也不会引发异常。 在代码中,我有一些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);
    }

您必须验证邮件服务器。 如果您使用自己的邮件服务器,则可以对其进行设置。 因此,它不需要身份验证,但是出于我希望这是显而易见的原因,所有公共电子邮件服务供应商都不会允许这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM