使用MS Exchange的Spring JavaMailSender:java.lang.noclassdeffounderror:com.sun.mail.uti.maillogger

时间:2017-09-11 02:17:09

标签: java spring spring-mvc javamail

我试图从Spring网络应用程序发送邮件而在生产中失败但在UAT中取得了成功。此Spring Web应用程序通过端口25部署在Tomcat服务器上,无需身份验证,无SSL。

错误 java.lang.noclassdeffounderror:com.sun.mail.uti.maillogger

重要

abcd.com是内部域名zxc.com是外部域名

我正在使用:

春天 - 4.2.6.RELEASE javax.mail-api - 1.5.5 邮件 - 1.4.1

@Bean
public JavaMailSender getMailSender() {

JavaMailSenderImpl mailSender = new JavaMailSenderImpl();

        // Using PROD.
        mailSender.setHost("smtp.abcd.com");
        mailSender.setPort(25);
        mailSender.setUsername("imsdc@abcd.com");
        mailSender.setPassword("test017");

        Properties javaMailProperties = new Properties();
        javaMailProperties.put("mail.smtp.starttls.enable", "false");
        javaMailProperties.put("mail.smtp.auth", "false"); 
        javaMailProperties.put("mail.transport.protocol", "smtp");
        javaMailProperties.put("mail.debug", "true"); //

        mailSender.setJavaMailProperties(javaMailProperties);

     return mailSender;

}

2 个答案:

答案 0 :(得分:1)

com.sun.mail.util.MailLogger是JavaMail API [1]的一部分,存在于Java EE(Web应用程序服务器)中。

Java SE中不存在

com.sun.mail.util.MailLogger

也许,UAT使用Java EE,因此成功。 生产使用没有JavaMail的Tomcat,因此失败。

解决方案:下载,将JavaMail依赖项添加到您的生产环境[2](将JavaMail jar依赖项置于%CATALINA_HOME%\lib,或者通过Maven pom.xml文件添加JavaMail依赖项)

[1] http://www.oracle.com/technetwork/java/javamail/index.html [2] https://javaee.github.io/javamail/#Download_JavaMail_Release

答案 1 :(得分:0)

由于某种原因,未找到依赖项(可能是因为它不在JRE环境中)。尝试将此依赖项添加到您的pom.xml:

<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.6.0</version>
</dependency>