English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Envoi de courriels JSP

Bien que l'implémentation de la fonction d'envoi d'e-mail en utilisant JSP soit simple, il est nécessaire d'avoir l'API JavaMail et d'installer le JavaBean Activation Framework.

  • Vous pouvez télécharger la dernière version sur le site Java depuis JavaMailOuvrez la page右侧有一个 Téléchargements Cliquez sur ce lien pour télécharger.

  • Vous pouvez télécharger la dernière version sur le site Java depuis JAF (version 1.1.1).

Téléchargez et décompressez ces fichiers, dans le répertoire racine, vous verrez une série de fichiers jar. Ajoutez les fichiers jar mail.jar et activation.jar à la variable CLASSPATH.

Envoyer un e-mail simple

Cet exemple montre comment envoyer un e-mail simple à partir de votre machine. Il suppose que localhost est connecté au réseau et capable d'envoyer un e-mail. En même temps, veuillez vérifier à nouveau que les fichiers jar mail.jar et activation.jar ont été ajoutés à la variable CLASSPATH.

<%@ page import="java.io."*,java.util.*,javax.mail.*"%>
<%@ page import="javax.mail.internet."*,javax.activation.*"%>
<%@ page import="javax.servlet.http."*,javax.servlet.*" %>
<%
   String result;
   // E-mail du destinataire
   String to = "[email protected]";
   // E-mail de l'expéditeur
   String from = "[email protected]";
   // Supposons que vous envoyiez un e-mail depuis l'hôte local
   String host = "localhost";
   // Obtenir l'objet de propriétés système.
   Properties properties = System.getProperties();
   // Définir le serveur de messagerie.
   properties.setProperty("mail.smtp.host", host);
   // Obtenir l'objet Session par défaut.
   Session mailSession = Session.getDefaultInstance(properties);
   try{
      // Créer un objet MimeMessage par défaut.
      MimeMessage message = new MimeMessage(mailSession);
      // Définir le champ d'en-tête From:
      message.setFrom(new InternetAddress(from));
      // Définir le champ d'en-tête To:
      message.addRecipient(Message.RecipientType.TO,
                               new InternetAddress(to));
      // Définir le champ d'en-tête Subject:
      message.setSubject("Ceci est la ligne de sujet!");
      // Message actuel configuré maintenant
      message.setText("Ceci est le message réel");
      // Envoyer un message
      Transport.send(message);
      result = "Message envoyé avec succès....";
   }catch (MessagingException mex) {
      mex.printStackTrace();
      result = "Erreur : Impossible d'envoyer le message....";
   }
%>
<html>
<head>
<title>Envoyer un e-mail en utilisant JSP</title>
</head>
<body>
<center>
<h1>Envoyer un Email en utilisant JSP</h1>
</center>
<p align="center">
<% 
   out.println("Result: " + result + "\n");
%>
</p>
</body>
</html>

Maintenant, accédez à http ://localhost :8080/SendEmail.jsp, il enverra un e-mail à [email protected] et affichera le résultat suivant :

Envoyer un e-mail en utilisant JSP
Résultat : message envoyé avec succès....

Si vous souhaitez envoyer un e-mail à plusieurs personnes, les méthodes suivantes peuvent être utilisées pour indiquer plusieurs adresses e-mail :

void addRecipients(Message.RecipientType type, 
                   Address[] addresses)
lève MessagingException

La description des paramètres est la suivante :

  • type : cette valeur sera définie sur TO (destinataire), CC ou BCC. CC signifie Carbon Copy (copie en C), et BCC signifie Blind Carbon Copy (copie en C cachée). L'exemple de programme utilise TO.

  • addresses : c'est un tableau d'adresses e-mail, et l'adresse e-mail spécifiée doit être utilisée avec la méthode InternetAddress().

Envoyer un e-mail HTML

Cet exemple envoie un e-mail HTML simple. Il suppose que votre localhost est connecté au réseau et capable d'envoyer des e-mails. En même temps, veuillez vérifier à nouveau que les fichiers jar mail.jar et activation.jar ont été ajoutés à la variable CLASSPATH.

Cette instance est très similaire à la précédente, mais dans cette instance, nous utilisons la méthode setContent(), pour "text/html" en tant que deuxième paramètre pour indiquer que le message contient du contenu HTML.

<%@ page import="java.io."*,java.util.*,javax.mail.*"%>
<%@ page import="javax.mail.internet."*,javax.activation.*"%>
<%@ page import="javax.servlet.http."*,javax.servlet.*" %>
<%
   String result;
   // E-mail du destinataire
   String to = "[email protected]";
   // E-mail de l'expéditeur
   String from = "[email protected]";
   // Supposons que vous envoyiez un e-mail depuis l'hôte local
   String host = "localhost";
   // Obtenir l'objet de propriétés système.
   Properties properties = System.getProperties();
   // Définir le serveur de messagerie.
   properties.setProperty("mail.smtp.host", host);
   // Obtenir l'objet Session par défaut.
   Session mailSession = Session.getDefaultInstance(properties);
   try{
      // Créer un objet MimeMessage par défaut.
      MimeMessage message = new MimeMessage(mailSession);
      // Définir le champ d'en-tête From:
      message.setFrom(new InternetAddress(from));
      // Définir le champ d'en-tête To:
      message.addRecipient(Message.RecipientType.TO,
                               new InternetAddress(to));
      // Définir le champ d'en-tête Subject:
      message.setSubject("Ceci est la ligne de sujet!");
     
      // Définir un message HTML
      message.setContent("<h1>Ceci est le message réel</h1>",
                            "text/html" );
      // Envoyer un message
      Transport.send(message);
      result = "Message envoyé avec succès....";
   }catch (MessagingException mex) {
      mex.printStackTrace();
      result = "Erreur : Impossible d'envoyer le message....";
   }
%>
<html>
<head>
<title>Envoyer un Email HTML en utilisant JSP</title>
</head>
<body>
<center>
<h1>Envoyer un Email en utilisant JSP</h1>
</center>
<p align="center">
<% 
   out.println("Result: " + result + "\n");
%>
</p>
</body>
</html>

Vous pouvez maintenant essayer d'utiliser le fichier JSP ci-dessus pour envoyer un e-mail contenant un message HTML.

Inclure une pièce jointe dans l'e-mail

Cette instance nous montre comment envoyer un e-mail contenant une pièce jointe.

<%@ page import="java.io."*,java.util.*,javax.mail.*"%>
<%@ page import="javax.mail.internet."*,javax.activation.*"%>
<%@ page import="javax.servlet.http."*,javax.servlet.*" %>
<%
   String result;
   // E-mail du destinataire
   String to = "[email protected]";
   // E-mail de l'expéditeur
   String from = "[email protected]";
   // Supposons que vous envoyiez un e-mail depuis l'hôte local
   String host = "localhost";
   // Obtenir l'objet de propriétés système.
   Properties properties = System.getProperties();
   // Définir le serveur de messagerie.
   properties.setProperty("mail.smtp.host", host);
   // Obtenir l'objet Session par défaut.
   Session mailSession = Session.getDefaultInstance(properties);
   try{
      // Créer un objet MimeMessage par défaut.
      MimeMessage message = new MimeMessage(mailSession);
      // Définir le champ d'en-tête From:
      message.setFrom(new InternetAddress(from));
      // Définir le champ d'en-tête To:
      message.addRecipient(Message.RecipientType.TO,
                               new InternetAddress(to));
      // Définir le champ d'en-tête Subject:
      message.setSubject("Ceci est la ligne de sujet!");
      // Créer une partie de message
      BodyPart messageBodyPart = new MimeBodyPart();
      // Remplir le message
      messageBodyPart.setText("Ceci est le corps du message");
      
      // Créer un message multimédia
      Multipart multipart = new MimeMultipart();
      // Configurer la partie du message texte
      multipart.addBodyPart(messageBodyPart);
      // Partie de l'attachment
      messageBodyPart = new MimeBodyPart();
      String filename = "file.txt";
      DataSource source = new FileDataSource(filename);
      messageBodyPart.setDataHandler(new DataHandler(source));
      messageBodyPart.setFileName(filename);
      multipart.addBodyPart(messageBodyPart);
      // Envoyer le message complet
      message.setContent(multipart );
      // Envoyer un message
      Transport.send(message);
      String title = "Envoyer un Email";
      result = "Message envoyé avec succès....";
   }catch (MessagingException mex) {
      mex.printStackTrace();
      result = "Erreur : Impossible d'envoyer le message....";
   }
%>
<html>
<head>
<title>Envoyer un e-mail avec l'attachement en utilisant JSP</title>
</head>
<body>
<center>
<h1>Envoyer un e-mail joint en utilisant JSP</h1>
</center>
<p align="center">
<% 
   out.println("Result: " + result + "\n");
%>
</p>
</body>
</html>

Partie d'authentification de l'utilisateur

Si le serveur de courrier électronique nécessite un nom d'utilisateur et un mot de passe pour l'authentification de l'utilisateur, vous pouvez le configurer comme suit :

 properties.setProperty("mail.user", "myuser");
 properties.setProperty("mail.password", "mypwd");

Envoyez un e-mail en utilisant un formulaire

Recevez un e-mail à l'aide d'un formulaire HTML et obtenez toutes les informations de l'e-mail via l'objet request :

String to = request.getParameter("to");
String from = request.getParameter("from");
String subject = request.getParameter("subject");
String messageText = request.getParameter("body");

Après avoir obtenu ces informations, vous pouvez utiliser les exemples mentionnés précédemment pour envoyer des e-mails.