创建 MimeMessage 在 IntelliJ 中有效,卡在 .jar 中

Creating MimeMessage works in IntelliJ, gets stuck in .jar

我正在尝试使用以下代码通过 Java 邮件发送邮件:

public boolean sendMail(String recipients, String subject, String message) {
        try {
            System.out.println("Starting with sending..");
            Properties props = new Properties();
            props.put("mail.smtp.host", SMTP_HOST);
            props.put("mail.smtp.auth", "true");
            props.put("mail.debug", "false");
            props.put("mail.smtp.ssl.enable", "true");
            System.out.println("Opening session");
            Session session = Session.getDefaultInstance(props, new SocialAuth());
            System.out.println("Creating Message");
            session.setDebug(true);
            System.out.println("Session is " + session.toString());
            Message msg = new MimeMessage(session);
            System.out.println("Getting InternetAddress");
            InternetAddress from = new InternetAddress(FROM_ADDRESS, FROM_NAME);
            System.out.println("Setting info");
            msg.setFrom(from);

            msg.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients));

            msg.setSubject(subject);
            msg.setContent(message, "text/plain");
            Transport transport = session.getTransport("smtp");
            System.out.println("Connecting to smtp server");
            transport.connect(SMTP_HOST, FROM_ADDRESS, PASSWORD); //host, 25, "myemailhere", "mypasshere");
            msg.saveChanges();
            System.out.println("About to transport message");
            transport.sendMessage(msg, msg.getAllRecipients());
            System.out.println("Mail sent");
            return true;
        } catch (UnsupportedEncodingException ex) {
            ex.printStackTrace();
            return false;

        } catch (MessagingException ex) {
            ex.printStackTrace();
            return false;
        }
    }

当从 IntelliJ 运行ning 时,这工作得很好。但是,当我 运行 .jar 文件时,它卡在 Message msg = new MimeMessage(session).

我试过更改 class-.jars 的路径。尝试捕获任何可能抛出的异常,但 none 是。 Java仅邮件调试 returns 当前版本 1.6.2,除此之外别无其他。我似乎无法弄清楚为什么没有创建 MimeMessage。

可能是 mime 或任何相关的缺失依赖项。查看 IntelliJ 的 运行 选项卡 并查看您的 jar 中是否缺少某些内容。

首先你需要知道if you created a .jar file properly

查看相关问题here

如果生成正确,你应该执行它:

java -jar jarfile.jar

另一个有趣的点是:

So many parts of the Java ecosystem, depend on configuration files that describes how the environment should be established and it's entirely common for developers to forget to copy the configuration file alongside the JAR file.

来自here

我已经将项目切换到 maven 项目,让 maven 为我构建依赖项,现在一切正常。我假设 IntelliJ 的 .jar 构建中的某些东西出了问题,但现在这是可行的。