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 :

Envoyer un email en Java (site web)


Sujet :

Servlets/JSP Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2015
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Envoyer un email en Java (site web)
    Bonjour a tous les developpeurs Java Web !

    j'ai crée un site internet avec un formulaire de contact. lorsque je clique sur le bouton "envoyer" j'ai l'erreur ci-dessous :


    HTTP ERROR 500
    
    Problem accessing /EnvoiMail. Reason:
    
        INTERNAL_SERVER_ERROR
    Caused by:
    
    java.lang.NullPointerException
    	at com.swm.monSite.MailDispacherServlet.processRequest(MailDispacherServlet.java:143)
    	at com.swm.monSite.MailDispacherServlet.doPost(MailDispacherServlet.java:188)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
    	at com.google.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:74)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    	at com.google.appengine.tools.development.ResponseRewriterFilter.doFilter(ResponseRewriterFilter.java:128)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    	at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:34)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    	at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:63)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    	at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    	at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:125)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    	at com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectRequest(DevAppServerModulesFilter.java:366)
    	at com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectModuleRequest(DevAppServerModulesFilter.java:349)
    	at com.google.appengine.tools.development.DevAppServerModulesFilter.doFilter(DevAppServerModulesFilter.java:116)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
    	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
    	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
    	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
    	at com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:98)
    	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    	at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:512)
    	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    	at org.mortbay.jetty.Server.handle(Server.java:326)
    	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
    	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938)
    	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755)
    	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
    	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
    	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
    	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
    




    code de mon bean :

    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
    import java.util.Properties;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.ejb.Stateless;
    import javax.mail.Message;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
     
     
     
    @Stateless
    public class mailSenderBean {
     
        public void sendEmail(String fromEmail, String username, String password, String toEmail, String subject, String message){
     
     
            try {
                Properties props = System.getProperties();
                props.setProperty("mail.smtp.host", "smtp.gmail.com");
                props.setProperty("mail.smtp.auth", "true");
                props.setProperty("mail.smtp.port", "465");
                props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
                props.setProperty("mail.smtp.socketFactory.port", "465");
                props.setProperty("mail.smtp.socketFactory.fallback", "false");
     
     
                Session mailSession = Session.getDefaultInstance(props, null);
                mailSession.setDebug(true);
     
                Message mailMessage = new MimeMessage(mailSession);
     
     
                mailMessage.setFrom(new InternetAddress(fromEmail));
                mailMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(toEmail));
                mailMessage.setContent(message, "text/html");
                mailMessage.setSubject(subject);
     
     
                Transport transport = mailSession.getTransport("smtp");
                transport.connect("smtp.gmail.com", username, password);
     
                transport.sendMessage(mailMessage, mailMessage.getAllRecipients());
     
            } catch (Exception ex) {
                Logger.getLogger(mailSenderBean.class.getName()).log(Level.SEVERE, null, ex);
            }
        }   
    }

    code de ma servlet :

    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
    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.ejb.EJB;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import com.swm.bean.mailSenderBean;
     
     
    @WebServlet(name = "MailDispacherServlet", urlPatterns = {"/MailDispacherServlet"})
    public class MailDispacherServlet extends HttpServlet {
     
        @EJB
        private mailSenderBean mailSender;
     
        protected void processRequest(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
     
            String toEmail = request.getParameter("email");
            String subject = request.getParameter("subject");
            String message = request.getParameter("message");
     
     
     
            String fromEmail = "xyz@gmail.com";
            String username = "xyz";
            String password = "gdgdg";
     
     
     
            try (PrintWriter out = response.getWriter()) {
                /* TODO output your page here. You may use following sample code. */
     
                /* appel de notre bean d'envoi de message*/
     
     
                mailSender.sendEmail(fromEmail, username, password, toEmail, subject, message);
     
                //.........................................
     
     
                out.println("<!DOCTYPE html>");
                out.println("<html>");
                out.println("<head>");
                out.println("<title>Status mail !</title>");            
                out.println("</head>");
                out.println("<body>");
                out.println("<h1> Status Mail!!!</h1>");
                out.println("<b>Votre message a bien été envoyé, nous allons vous contacter le plus tot possible !!!</b><br>");
                out.println("Cliquez <a href='email.jsp'>ici</a> pour retournez !!!");
                out.println("</body>");
                out.println("</html>");
            }
        }
     
     
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            processRequest(request, response);
        }
     
     
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            processRequest(request, response);
        }
     
     
        @Override
        public String getServletInfo() {
            return "Short description";
        }// </editor-fold>
     
    }
    code JSP :

    Code html : 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
    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
     
    <!DOCTYPE html>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title> contact </title>
        </head>
        <body>
            <form method="post" action="/EnvoiMail">
    			<table>
    				<tr>
    					<td align="left"><b>Email :</b></td>
    					<td>
    						<input type="email" name="email" size="50" align="left" />
    					</td>
    				</tr>
    				<tr>
    					<td align="left" ><b>Objet :</b></td>
    					<td>
    						<input type="text" name="subject" size="50">
    					</td>
    				</tr>
    				<tr>
    					<td  ><b>Message : </b></td>
    					<td>
    						<textarea style="margin-top: 0px;" name="message" rows="15" cols="180"></textarea><br>
    					</td>
    				</tr>		
     
    				<tr>
    					<td>
    						<input type="submit" value="Envoyer">
    					</td>
    				</tr>
    			</table>
    		</form>
        </body>
    </html>

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 265
    Points : 181
    Points
    181
    Par défaut erreur
    bonjour, il semble que tu as une erreur ligne 143 du dispatcher.

    montre ce que tu as à cet endroit.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2015
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par batou22003 Voir le message
    bonjour, il semble que tu as une erreur ligne 143 du dispatcher.

    montre ce que tu as à cet endroit.


    voici cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mailSender.sendEmail(fromEmail, username, password, toEmail, subject, message);

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    mailsender est null, donc ton EBJ n'est pas injecté. Question dans l'ordre:

    • l'EJB se trouve bien dans le war?
    • Le conteneur que tu utilise as bien un support EJB? Jetty n'a pas de support EJB par défaut puisque c'est un web profile. Donc à moins que tu l'ai ajouté explicitement par exemple avec openEJB, pas d'ejb donc pas d'injection ejb.
    • Quelle version de javaEE indiquée dans le web.xml ?

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Analyste Concepteur SI
    Inscrit en
    Septembre 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Concepteur SI
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 37
    Points : 37
    Points
    37
    Par défaut
    Je sais pas si ça peut aider mais moi je l'implémente comme ci-dessous et ça marche au poil

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
            // creates a simple e-mail object
            SimpleMailMessage email = new SimpleMailMessage();
            email.setTo("Adresse email vers qui on envoie le mail");
            email.setSubject("Ici le sujet du mail");
            email.setText("Le message du corps du mail");
     
            // sends the e-mail
            try
            	{mailSender.send(email);}
            catch (MailException me)
            	{//Wrong email syntax}
    J'utilise "org.springframework.mail.SimpleMailMessage".

    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
     
    <!-- JavaMailSender interface, supporting both JavaMail and Spring SimpleMailMessages -->
        <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
    		<property name="host" value="smtp.gmail.com" />
    		<property name="port" value="587" />
    		<property name="username" value="ton.adressemail@gmail.com" />
    		<property name="password" value="password" />
     
    		<!-- The name of the property, following JavaBean naming conventions -->
    		<property name="javaMailProperties">
    			<props>
    				<prop key="mail.transport.protocol">smtp</prop>
    				<prop key="mail.smtp.auth">true</prop>
    				<prop key="mail.smtp.starttls.enable">true</prop>
    				<!-- <prop key="mail.debug">true</prop> [DEBUG MODE] uncomment to set on-->
    			</props>
    		</property>
    	</bean>

  6. #6
    Nouveau Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par swmconnexion Voir le message
    voici cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mailSender.sendEmail(fromEmail, username, password, toEmail, subject, message);
    est ce que t'as trouvé la solution à cette erreur ?

Discussions similaires

  1. Applet Java Site Web
    Par calixte35 dans le forum Applets
    Réponses: 0
    Dernier message: 17/05/2011, 10h57
  2. Envoyer l'url de ce site web vers une connaissance
    Par Chavadam dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/04/2011, 16h45
  3. [Mail] Envoyer un email par une interface Web
    Par stephane81 dans le forum Langage
    Réponses: 1
    Dernier message: 12/12/2007, 18h43
  4. [Mail] Envoyer un email depuis un site
    Par killer_instinct dans le forum Langage
    Réponses: 13
    Dernier message: 17/04/2007, 11h12
  5. Envoyer des textos depuis un site web ?
    Par Ylias dans le forum Général Conception Web
    Réponses: 18
    Dernier message: 27/02/2006, 14h45

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