我使用的是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
。
2条答案
按热度按时间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)。khbbv19g2#
从log4j 2 2.18.0开始,一个额外的依赖项log4j-jakarta-smtp可以与log4j-core和log4j-api沿着包含在pom中,以使log4j 2使用最新版本的jakarta.mail而不是javax.mail。