创建MimeMessage在IntelliJ中工作,陷入.jar



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

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 运行时,这工作得很好。但是,当我运行.jar文件时,它卡在行Message msg = new MimeMessage(session)

我尝试更改 .jar 的类路径。尝试捕获可能引发的任何异常,但没有一个。JavaMail debug 只返回当前版本 1.6.2,但不返回其他版本。我似乎无法弄清楚为什么MimeMessage没有被创建。

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

首先,您需要知道是否正确创建了.jar文件

在此处查看相关问题

如果生成正确,则应按以下方式执行:

java -jar jarfile.jar

另一个有趣的点是:

Java 生态系统的许多部分都依赖于描述如何建立环境的配置文件,开发人员忘记将配置文件与 JAR 文件一起复制是很常见的。

从这里

我已经将项目切换到 maven 项目,让 maven 为我构建依赖项,现在一切正常。我假设IntelliJ的.jar大楼内出了问题,但现在这是有效的。

最新更新