2016-12-04 5 views
0

J'essaie d'envoyer un courriel en utilisant SpringMVC. J'ai fait un bean JavaMailSender et ai une erreur.SpringMVC envoyer un courriel

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

Erreur:

04-Dec-2016 20: 05: 50,699 GRAVES [Connexion RMI TCP (31) -127.0.0.1] org.springframework.web.context.ContextLoader.initWebApplicationContext initialisation du contexte a échoué java.lang.NoClassDefFoundError: org/springframework/mail/javamail/JavaMailSender

Mon contexte avec ce haricot:

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; 
    } 
} 

Mon 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> 
... 

Qu'est-ce que j'ai fait de mal?

+0

Comment lancez-vous votre application? Est-ce une application Web fonctionnant sous Tomcat? Une application de ligne de commande démarrée avec 'java ...'? Autre chose? – mangotang

+0

commence par IntelijIDEA avec TomCat – Pal

Répondre

0

Il semble que vous ayez besoin de spring-context-support-4.3.4.RELEASE.jar sur votre chemin de classe.

Pour ajouter cela au chemin de classe de votre application dans IntelliJ, modifiez le Project Structure de votre projet et ajoutez un Library sous Libraries en faisant référence au fichier jar Spring. Ajoutez ou modifiez votre Module et ajoutez la bibliothèque au Module. Ajoutez ou modifiez Artifacts et assurez-vous que la bibliothèque ou le module est l'un des Available Elements pour le Artifact.

Dans le menu Run, cliquez sur Edit Configurations pour votre configuration Tomcat, sous l'onglet Deployment, ajoutez l'artefact (ou bibliothèque) à la liste Deploy at server startup.

This information at JetBrains fournit plus d'informations sur la configuration de votre configuration Intellij pour obtenir les fichiers JAR souhaités sur votre chemin de classe.

Il est également possible que vous avez besoin de faire un simple changement de configuration à votre dépendance dans votre pom.xml: (. À noter la présence de l'élément <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> 

(Ces instructions peuvent varier en fonction de la version d'Intellij que vous utilisez.)

En résumé, vous devez obtenir le fichier Spring sur le chemin de classe de votre application lors de l'exécution.