IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

envoi d'un mail automatiquement


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 195
    Par défaut envoi d'un mail automatiquement
    Bonjour à tous,

    Je termine l'application que j'ai du réaliser pendant mon stage, et je dois régler les derniers détails. Devant faire un intranet, ayant coder les mots de passe en md5, je souhaiterais pouvoir faire une fonctionnalité permettant de récupérer un nouveau mot de passe en cas de perte. Je demande donc l'identifiant et l'adresse mail de l'utilisateur, et je souhaiterais lui envoyé un mail automatiquement avec ce nouveau mot de passe. Voila la classe que j'ai telecharger :

    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
     
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.Properties;
     
    import javax.mail.Message;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    public class TestMailService extends HttpServlet {
     
        public void doPost(HttpServletRequest request,
                           HttpServletResponse response)
            throws IOException, ServletException
        {
            PrintWriter writer = response.getWriter();
            response.setContentType("text/html");
            writer.println("<html><head><title>Mail Example</title></head>");
            writer.println("<body bgcolor=\"white\">");
            writer.println("<h1>Mail Example</h1>");
     
            ///////// set this variable to be your SMTP host
     
           String mailHost = "your.smtp.server";
     
            ///////// set this variable to be your desired email recipient
     
            String to = "recipient@recip.recip";
     
            // these variables come from the mail form
     
            String from = request.getParameter("from");
            String subject = request.getParameter("subject");
            String body = request.getParameter("body");
     
            if ((from != null) && (to != null) && (subject != null)  && (body != null)) // we have mail to send
            {
     
            try {
     
     
                //Get system properties
                Properties props = System.getProperties();
     
                //Specify the desired SMTP server
                props.put("mail.smtp.host", mailHost);
     
                // create a new Session object
                Session session = Session.getInstance(props,null);
     
                // create a new MimeMessage object (using the Session created above)
                Message message = new MimeMessage(session);
                message.setFrom(new InternetAddress(from));
                message.setRecipients(Message.RecipientType.TO, new InternetAddress[] { new InternetAddress(to) });
                message.setSubject(subject);
                message.setContent(body, "text/plain");
     
                Transport.send(message);
     
                // it worked!
                writer.println("<b>Thank you.  Your message to " + to + " was successfully sent.</b>");
     
            } catch (Throwable t) {
     
                writer.println("<b>Unable to send message: <br><pre>");
                t.printStackTrace(writer);
                writer.println("</pre></b>");
            }
     
     
            }
            else
            {
                // no mail to send. print a blank mail form
                writer.println("<form action=\"/mine/mail\" method=\"POST\">");
                writer.println("<table border=\"0\">");
                writer.println("<tr><td>Message From: </td><td><input type=\"text\" name=\"from\"></td></tr>");
                writer.println("<tr><td>Subject: </td><td><input type=\"text\" name=\"subject\"></td></tr>");
                writer.println("<tr><td valign=\"top\">Message: </td><td><textarea name=\"body\" rows=\"10\" cols\"40\"></textarea></td></tr>");
                writer.println("<tr><td colspan=\"2\" align=\"center\"><input type=\"submit\" value=\"Send\"></td></tr>");
                writer.println("</table>");
                writer.println("</form>");
            }
     
     
            writer.println("</body>");
            writer.println("</html>");        
     
        }
     
        // doGet() just calls doPost()
     
        public void doGet(HttpServletRequest request,
                           HttpServletResponse response)
            throws IOException, ServletException
        {
            doPost(request, response);
        }
    }
    Et voila le code de ma servlet qui me servirait a envoyé ce mail :

    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
     
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Properties;
     
    import javax.mail.Message;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import com.bi.projecttracking.dao.UserDO;
    import com.bi.projecttracking.services.AuthenticationService;
    import com.bi.projecttracking.services.ConfigurationService;
    import com.bi.projecttracking.services.LoggingService;
    import com.bi.projecttracking.services.Md5Service;
    import com.bi.projecttracking.services.TestMailService;
    import com.bi.projecttracking.tools.Tools;
     
    /**
     * Servlet implementation class for Servlet: NewPasswordServlet
     *
     */
     public class NewPasswordServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
        /* (non-Java-doc)
    	 * @see javax.servlet.http.HttpServlet#HttpServlet()
    	 */
    	public NewPasswordServlet() {
    		super();
    	}   		
     
    	/* (non-Java-doc)
    	 * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		//instanciate all the required Services
    		AuthenticationService authenticationService = new AuthenticationService();
    		ConfigurationService configService = new ConfigurationService();
    		LoggingService loggingService = new LoggingService(configService.getProperties());
    		Md5Service md5Service = new Md5Service();
    		TestMailService testMailService = new TestMailService();
     
    		String login = request.getParameter("login");
    		String mail = request.getParameter("mail");
    		String jspForward = "";
     
    		//put all the attributes in an ArrayList
    		HashMap mandatoryFields = new HashMap();
    		mandatoryFields.put("login", login);
    		mandatoryFields.put("mail", mail);
     
    		//check that the form is correctly filled
    		ArrayList uncompleteFields = Tools.checkAttributes(mandatoryFields);
    		loggingService.log("uncompleteFields : " + uncompleteFields.size(), LoggingService.DEBUG);
     
    		//check that the login exist on the database
    		UserDO user = authenticationService.getUser(login);
    		Boolean userExist = user != null? true:false;
    		loggingService.log("userExist : " + userExist, LoggingService.DEBUG);
     
    		if (uncompleteFields != null && uncompleteFields.size() == 0 && userExist) {
     
    			// we generate a new password 
    			String newPass = "bi-"+login;
    			//we encrypted this new password
    			String newPassEncrypted = md5Service.encode(newPass);
    			// we edit the password of this user in the database
    			user.setPassword(newPassEncrypted);
    			//authenticationService.editUser(user);
    			jspForward = "/jsp/Login.jsp";
     
     
     
     
     
     
    			//set the inforrmations
    			request.setAttribute("sendPass",true);
    			request.setAttribute("mail",mail);
     
     
    		} else {
    			jspForward = "/jsp/ForgetPassword.jsp";
    			request.setAttribute("uncompleteFields",uncompleteFields);
    			request.setAttribute("userExist", userExist);
    			if (login!=null) {
    				request.setAttribute("login",login);
    			}
    			if (mail!=null) {
    				request.setAttribute("mail",mail);
    			}
    		}
    		response.setContentType("text/html");
    		RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(jspForward);
    		dispatcher.forward(request,response);
    	}  	  	    
    }
    Je ne parviens cependant pas a comprendre comment utiliser ce service testMailService dans ma servlet .

    Si quelqu'un a une idée, je le remerci d'avance !!

    A+

  2. #2
    Membre confirmé Avatar de fedfil
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 91
    Par défaut
    Salut boy !

    Euh, c'est normal que tu ne puissent pas : tu ne peux pas appeler une servlet avec une autre !

    Par contre, l'exemple que tu as téléchargé te permet de comprendre comment utiliser javamail. Il te reste donc à l'adapter et à l'utiliser directement dans ta servlet.

    A+

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 195
    Par défaut
    Effectivement .

    J'essaie ca, merci

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 195
    Par défaut
    Juste une petite question a ce propos. Lorsque j'arrive a la ligne de code suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Message message = new MimeMessage(session);
    l'expection qui est dans le catch est levé. Je pense que ca viens de la ligne de la chaine mailHost, qui est actuellement la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String mailHost = "smtp.google.com";
    Comment savoir ce qu'il faut mettre dans cette chaine ?? J'ai fait quelques tutoriaux, mais je n'ai encore rien trouvé

  5. #5
    Membre confirmé Avatar de fedfil
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 91
    Par défaut
    Pour envoyer un mail, il te faut un serveur smtp.
    C'est donc normal, le smtp "smtp.google.com" n'existe pas !

    Soit t'es en entreprise, il faut donc utiliser le ftp de ta boite. Sinon, il te faut en trouver un public.

    A+

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 195
    Par défaut
    Ok merci, je vais me renseigner

    A++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SP-2010] Envoi d'e-mail automatique
    Par swann7 dans le forum SharePoint
    Réponses: 6
    Dernier message: 18/08/2010, 13h08
  2. [MediaWiki] Envoi d'e-mails automatiques
    Par jadey dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 26/08/2009, 13h58
  3. envoie d'un mail automatique
    Par pythfred dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/06/2008, 16h10
  4. [Upload] Envoi d'un mail automatique...
    Par FredMines dans le forum Langage
    Réponses: 7
    Dernier message: 26/03/2006, 17h13
  5. Envoi d'un mail automatiquement
    Par batmat86 dans le forum C++Builder
    Réponses: 10
    Dernier message: 16/06/2004, 09h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo