2016-12-04 305 views
0

我試圖使用SpringMVC發送電子郵件。我製作了一個JavaMailSender bean並且出現錯誤。SpringMVC發送電子郵件

@Bean 
public JavaMailSender javaMailSender(){ 
    JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl(); 
    javaMailSender.setUsername("test"); 
    javaMailSender.setPassword("test"); 
    javaMailSender.setPort(56); 
    javaMailSender.setHost("smtp.test.ru"); 
    return javaMailSender; 
} 

錯誤:

04日 - 12月2016 20:05:50.699嚴重[RMI TCP連接(31)-127.0.0.1] org.springframework.web.context.ContextLoader.initWebApplicationContext上下文初始化失敗 java.lang.NoClassDefFoundError:組織/ springframework的/郵件/的JavaMail/JavaMailSender

我這個bean上下文:

import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.context.annotation.PropertySource; 
import org.springframework.mail.javamail.JavaMailSender; 
import org.springframework.mail.javamail.JavaMailSenderImpl; 

import java.util.Properties; 

@Configuration 
@PropertySource("classpath:util.properties") 
@PropertySource(value = {"classpath:auth.properties"}) 
public class MailContext { 
    @Bean 
    public JavaMailSender javaMailSender(){ 
     JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl(); 
     javaMailSender.setUsername("test"); 
     javaMailSender.setPassword("test"); 
     javaMailSender.setPort(556); 
     javaMailSender.setHost("test.ru"); 
     javaMailSender.setProtocol("smtp"); 
     Properties properties = new Properties(); 
     properties.setProperty("mail.debug", "true"); 
     javaMailSender.setJavaMailProperties(properties); 

     return javaMailSender; 
    } 
} 

我POM:

... 
<dependency> 
    <groupId>com.sun.mail</groupId> 
    <artifactId>javax.mail</artifactId> 
    <version>1.5.5</version> 
</dependency> 
<dependency> 
    <groupId>javax.activation</groupId> 
    <artifactId>activation</artifactId> 
    <version>1.1.1</version> 
</dependency> 
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context-support --> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-context-support</artifactId> 
    <version>4.3.4.RELEASE</version> 
</dependency> 
<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-mail</artifactId> 
    <version>1.4.2.RELEASE</version> 
</dependency> 
... 

我做錯了什麼?

+0

你是如何開始申請的?它是在Tomcat下運行的Web應用程序嗎?一個以'java ...'開頭的命令行應用程序?還有別的嗎? – mangotang

+0

從TomCat的IntelijIDEA開始 – Pal

回答

0

看起來你需要,但沒有spring-context-support-4.3.4.RELEASE.jar你的類路徑。

要將此項添加到IntelliJ中的應用程序類路徑中,請編輯項目的Project Structure,並在Libraries的基礎上添加Library,以引用Spring jar文件。添加或編輯您的Module並將庫添加到Module。添加或編輯Artifacts,並確保庫或模塊是ArtifactAvailable Elements之一。

Run菜單上,單擊Edit Configurations爲Tomcat配置,Deployment選項卡上,工件(或庫)添加到列表Deploy at server startup

This information at JetBrains提供了關於配置Intellij安裝程序以在類路徑中獲取所需jar的更多信息。

它也有可能是你需要做一個簡單的配置更改你的依賴在你的pom.xml:(注意添加<scope>元素的More information on Maven scopes available here。)

<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-context-support</artifactId> 
    <version>4.3.4.RELEASE</version> 
    <scope>runtime</scope> 
</dependency> 

(這些說明可能因您使用的Intellij版本而異。)

總之,您需要在運行時在應用程序的類路徑中獲取Spring jar。