Configurer Tomcat pour envoyer des mails

26 septembre 2008 at 8 h 59 min 1 commentaire

Cet article présente pas à pas une méthode pour configurer le serveur J2EE Tomcat afin de pouvoir envoyer des mails.

Vous aurez besoin au préalable d’un Tomcat installé, et d’un serveur de mail sortant (installé sur votre serveur, comme dans le cas de cet article, ou bien acceptant de relayer vos mail – par exemple le serveur SMTP de votre FAI mail.free.fr, mail.wanadoo.fr, etc…).

1 Installer les librairies de l’API JavaMail:

Il faut placer les fichiers mail.jar et activation.jar dans le dossier /catalina_home/commons/libs/.

J’insiste sur ce point: il est important de ne pas inclure ces 2 librairies dans votre webapp, sous peine d’avoir cette erreur assez peu explicite:

java.lang.ClassCastException: javax.mail.Session cannot be cast to javax.mail.Session

Nous allons donc télécharger ces deux librairies:

javamail-1_4_1.zip

Si vous utiliser le JDK 1.6 ou le JRE, vous n’auraez besoin que de javamail.

On dézippe l’archive fraichement utilisée (j’ai du télécharger le paquet unzip avec apt-get unzip, car gunzip ne prend en charge que les archives .gz), puis on place la librairie (n’oubliez pas de stopper le serveur avant).

mv /home/votre_username/javamail-1.4.1/mail.jar /opt/tomcat/common/lib/

Faire la même chose avec le fichier activation.jar si vous n’utiliser pas le JRE en version 6.

Si vous utilisez une version antérieure, vous aurez besoin également du Java Activation Framework:

2. Configurer la webapp:

La configuration s’effectue en deux étapes. Dans le fichier context.xml, on va déclarer la ressource avec cette ligne:

<Resource auth="Container" mail.smtp.host="localhost" name="mail/NomDeLaRessource" type="javax.mail.Session"/>

Ensuite, dans le fichier web.xml on va déclarer l’utilisation de la ressource afin qu’elle soit accessible par la webapp:

<resource-ref>
<description>Votre description </description>
<res-ref-name>mail/NomDeLaRessource</res-ref-name>
<res-type>javax.mail.Session</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>

3. Ecrire le code

Pour accéder à la ressource qu’on vient de définir, il faut utiliser le code java suivant :

Session session = null;
try {
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
session = (Session) envCtx.lookup("mail/NomDeLaRessource");

} catch (Exception ex) {
System.out.println("erreur au lookup");
System.out.println( ex.getMessage());
}

Ensuite, voici un exemple qui permet d’envoyer les messages:

Message message = new MimeMessage(session);
try {
message.setFrom(new InternetAddress(expediteur);
InternetAddress to[] = new InternetAddress[1];
to[0] = new InternetAddress(destinataire);
message.setRecipients(Message.RecipientType.TO, to);
message.setSubject(sujet);
message.setContent(corps, "text/html;charset=UTF-8");
Transport.send(message);
} catch (AddressException ex) {
System.out.println( ex.getMessage());
} catch (MessagingException ex) {
System.out.println( ex.getMessage());
}

Le plus pratique est de créer une fonction « helper » pour pouvoir envoyer des messages facilement, du type envoyerMessage(destinataires[],sujets[],corps[])… mais ce n’est pas l’objet de cet article.

Maintenant,votre Tomcat devrait être prêt pour envoyer des mails !

Références : tomcat.apache.org/
Tomcat mailing-list

Entry filed under: administration, java. Tags: , , , .

Debian: comment activer les logs du démon cron ? HOWTO: configure Tomcat to send mails, using javamail

Un commentaire Add your own

  • 1. mahmoud  |  27 mai 2011 à 2 h 00 min

    Salut, J’ai utilisé votre méthode mais, il y’a des erreurs
    les erreurs qu’on me signale est :
    « Context cannot be resolved to a type »
    « InitialContext cannot be resolved to a type »

    pouvez m’éclaircir la source de mon probleme ?

    Répondre

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

Trackback this post  |  Subscribe to the comments via RSS Feed


Articles récents


%d blogueurs aiment cette page :