bonjour,
J'utilise le design pattern fabrique pour fabriquer mes classes Actions.
Chaque classe Action traite une page jsp par l'intermediaire d'une methode traiter(HttpServletRequest req, HttpServletResponse).
Pour envoyer un mail, j'utilise la Classe Envoi ci-dessous:
et voici ma jsp:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 /** Destinataire du message. */ protected String message_dest = "o.mus@gmail.com"; /* Objet du message. */ protected String message_objet = "Re: detail du sujet "; /** Destinataire du message en copie (CC). */ protected String message_cc = "ptit@hotmail.fr"; /** Texte du message. */ protected String message_corps = "Bonjour dans une semaine vous recevrez de " + "plus amples détails sur " + "le sujet de votre choix"; /** Objet session de JavaMail. */ protected Session session; /** Objet message de JavaMail. */ protected Message mesg; public void envoyerMail(String nom, String prenom, String societe, String adresse, String cp, String ville, String pays, String email, String emailcc, String sujet, String message ) { // Nous devons passer les informations au serveur de messagerie sous // forme de propriétés car JavaMail en comporte beaucoup... Properties props = new Properties(); // Votre réseau doit donner au serveur SMTP local le nom // "nom_du_serveur_smtp" props.put("mail.smtp.host", "smtp.free.fr"); // Créer lobjet Session. session = Session.getDefaultInstance(props, null); session.setDebug(true); // activer le mode verbeux ! try { // Créer un message. mesg = new MimeMessage(session); // Adresse From - Indiquer la provenance du message mesg.setFrom(new InternetAddress("oukna.mustapha@free.fr")); // Adresse TO. InternetAddress toAddress = new InternetAddress(email); mesg.addRecipient(Message.RecipientType.TO, toAddress); // Adresse CC. InternetAddress ccAddress = new InternetAddress(emailcc); mesg.addRecipient(Message.RecipientType.CC, ccAddress); // Objet. mesg.setSubject(sujet); // Corps du message. mesg.setText(nom+prenom+societe+adresse+message); // Enfin, envoyer le message ! Transport.send(mesg); } catch (MessagingException ex) { while ((ex = (MessagingException) ex.getNextException()) != null) { ex.printStackTrace(); } } } }
le pb est que je recois cette erreur, et je ne sais pas pkoi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Relance de Commande</title> <link rel="stylesheet" type="text/css" href="style_de_base.css" media="screen"> </head> <body> <CENTER> Veuillez saisir vos coordonnées dans le formulaire ci-dessous </CENTER> <FORM method=post action="mail.gestcli"> <INPUT Name= "genre" Type="RADIO" Value="M">M. <INPUT Name= "genre" Type="RADIO" Value="MME">Mme <INPUT Name= "genre" Type="RADIO" Value="MLLE">Mlle <BR><BR> Nom :<INPUT Name="nom"> Prénom :<INPUT Name="prenom"> Société :<INPUT Name="societe" size="20" value="HistoBioLabo"><BR> <BR> N° et rue :<INPUT Name="adresse" Size="80" value="5, boulevard Aristide Briand"> <BR> <BR> Code Postal :<INPUT Name="cp" Size="5" value="92400"> Ville :<INPUT Name="ville" Size="50" value="Courbevoie"> <SELECT Name="Pays"> <OPTION> Angleterre <OPTION>Allemagne <OPTION> Australie <OPTION SELECTED>France <OPTION> Italie <OPTION>Japon <OPTION> USA <OPTION> Autre </SELECT> <BR> <BR> E-Mail Fournisseur<INPUT type="text" Name="email" size="35"> <BR> <BR> CC<INPUT type="text" Name="emailcc" size="35"> <BR> <BR> Sujet: <INPUT type="text" Name="sujet" size="50"> <BR> <BR> Votre Message <TEXTAREA rows="4" name="message" cols="34"> Madame, Monsieur, Nous avons besoin de : - - - pour le / /2008. Dans l'attente d'une future collaboration, je vous prie d'agrée, madame, monsieur, l'expression de ma considération distinguées. </TEXTAREA><BR><BR> <INPUT Value="Valider" Type="SUBMIT" name="action"> <INPUT Value="Effacer" Type="RESET" > </FORM> </body> </html>
Voici ma classe ActionFabrique:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 java.lang.NoClassDefFoundError: javax/mail/MessagingException Action.FabriqueAction.ActionFabrique(FabriqueAction.java:20) Controlleur.Controlleur.doPost(Controlleur.java:21) javax.servlet.http.HttpServlet.service(HttpServlet.java:710) javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
et ma classe Controlleur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 package Action; public class FabriqueAction { public Action ActionFabrique(String action){ if(action.equals("create")){ return new ActionCreation(); }else if(action.equals("fabricate")){ return new ActionFabrication(); }else if(action.equals("recherche")){ return new ActionRecherche(); }else if(action.equals("connection")){ return new ActionConnection(); }else if(action.equals("consultation")){ return new ActionConsultation(); }else if(action.equals("suppression")){ return new ActionSuppression(); }else if(action.equals("mail")){ return new ActionMail(); }else{ return null; } } }
J'aimerai simplement envoyer un mail en cliquant sur valider lorsque l'utilisateur a tout saisi.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 package Controlleur; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import Action.*; @SuppressWarnings("serial") public class Controlleur extends HttpServlet{ public void doPost(HttpServletRequest req, HttpServletResponse rep)throws ServletException, IOException{ // HttpSession session = req.getSession(); // System.out.println("session1: "+session.getMaxInactiveInterval()); // session.setMaxInactiveInterval(1); // System.out.println("session2: "+session.getMaxInactiveInterval()); String invocation = req.getServletPath(); String action = invocation.substring(1,invocation.lastIndexOf(".")); FabriqueAction fabrique =new FabriqueAction(); Action instanceAction = (Action) fabrique.ActionFabrique(action); String nextPage = instanceAction.traiter(req, rep); req.getRequestDispatcher(nextPage).forward(req,rep); } public void doGet(HttpServletRequest req, HttpServletResponse rep) throws IOException, ServletException{ this.doPost(req, rep); } }
merci
Partager