我尝试使用 SimpleJavaMail 库,但我认为在导入 API 的 JAR 及其依赖项时我错过了一些东西。我使用 Java 8 (OpenJDK),这里是我在 Eclipse Oxygen 项目配置中添加的外部 JAR 的列表:
slf4j-api-1.7.13.jar
(根据其 GitHub,1.7.13 版本似乎是自 2.5.1 版本以来在 SimpleJavaMail 中使用的
SLF4J
的版本)slf4j-simple-1.7.13.jar
javax.mail.jar
版本1.6.1simple-java-mail-5.0.3.jar
这是一个代码示例:
import org.simplejavamail.email.Email;
import org.simplejavamail.email.EmailBuilder;
import org.simplejavamail.mailer.Mailer;
import org.simplejavamail.mailer.MailerBuilder;
import org.simplejavamail.mailer.config.TransportStrategy;
public class Main {
public static void main(String[] args) throws Exception {
Email notif = EmailBuilder.startingBlank()
.to("[email protected]")
.withSubject("Bla")
.withPlainText("Lorem ipsum\nLorem ipsum")
.buildEmail();
Mailer mailer = MailerBuilder
.withSMTPServer("smtp.gmail.com", 587, "[email protected]", "bar")
.withTransportStrategy(TransportStrategy.SMTP_TLS)
.withSessionTimeout(10 * 1000)
.clearEmailAddressCriteria() // turns off email validation
.withDebugLogging(true)
.buildMailer();
mailer.sendMail(notif);
}
}
我在 Linux 上通过 Eclipse 运行该代码的例外情况是:
Exception in thread "main" java.lang.NoClassDefFoundError: org/hazlewood/connor/bottema/emailaddress/EmailAddressCriteria
at org.simplejavamail.mailer.MailerGenericBuilder.<init>(MailerGenericBuilder.java:152)
at org.simplejavamail.mailer.MailerBuilder$MailerRegularBuilder.<init>(MailerBuilder.java:136)
at org.simplejavamail.mailer.MailerBuilder.withSMTPServer(MailerBuilder.java:49)
at Main.main(Main.java:18)
Caused by: java.lang.ClassNotFoundException: org.hazlewood.connor.bottema.emailaddress.EmailAddressCriteria
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 4 more
知道如何解决这个问题吗?
pom.xml
for simple-java-mail-5.0.3 您缺少以下依赖项
<dependency>
<groupId>com.github.bbottema</groupId>
<artifactId>emailaddress-rfc2822</artifactId>
<version>1.0.1</version>
<scope>compile</scope>
</dependency>
我认为您应该使用 Maven 或 Gradle 等构建工具来设置项目,而不是手动添加 JAR 文件,以避免缺少依赖项的问题。