Java 11上的Log4j2 SMTP附加器:javax.mail还是jakarta.mail?

quhf5bfb  于 2023-05-17  发布在  Java
关注(0)|答案(2)|浏览(298)

我使用的是Java 11(Corretto 11)、log4j 2.12.1和jakarta.mail 2.0.1。我的log4j配置正在使用SMTP附加器,但我没有收到任何电子邮件。我确实在文件中看到了日志语句(当使用File或Console附加器时)。在Java8、log4j2.12.1和javax.mail1.6.2中使用完全相同的log4j配置时,我确实收到了电子邮件。我不能同时使用javax.mail和jakarta.mail,因为它们有重叠的类(比如com.sun.mail.util.MimeUtil)。它可以在javax.mail1.6.2中工作。
Java 11 + log4j2 + SMTP Appender是什么?如果我想使用log4j,我是否会坚持使用旧的javax.mail1.6.2,而这个版本已经不再维护了?
这可能是Eclipse中的一个怪癖,但是当我从log4j 2.12.1查看org.apache.logging.log4j.core.net.MimeMessageBuilder的源代码时,导入显示为javax.mail.*,但是MimeMessage类的javadoc显示为jakarta.mail.internet.MimeMessage

cu6pst1q

cu6pst1q1#

您可能已经知道,将Java EE从Oracle转移到Eclipse Foundation需要从javax.*命名空间(在Java EE 8/Jakarta EE 8中)更改为jakarta.*命名空间(Jakarta EE 9)。
由于所有库可能要经过许多年才能切换到Jakarta EE 9,并且考虑到所有Jakarta EE 9技术的切换必须同时完成,因此Jakarta EE 8实现可能会在很长一段时间内获得更新。
由于Log4j是尚未迁移的库之一,因此请使用com.sun.mail组中的jakarta.mail工件版本1.6.x。正如你所看到的,它仍然在更新(今天的最新版本:1.6.7)。

khbbv19g

khbbv19g2#

从log4j 2 2.18.0开始,一个额外的依赖项log4j-jakarta-smtp可以与log4j-core和log4j-api沿着包含在pom中,以使log4j 2使用最新版本的jakarta.mail而不是javax.mail。

<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-jakarta-smtp -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jakarta-smtp</artifactId>
<version>2.19.0</version>
</dependency>

相关问题