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

API standards et tierces Java Discussion :

java mail probleme


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 13
    Par défaut java mail probleme
    Salut tout le monde, J essaye d envoyer un email a partir d'une page web contenant: to: from: subject: message: au proprietaire du site web le code est le suivant :

    mailerbean.java

    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
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
     
    package test;
    import java.io.*;
    import java.util.*;
    import javax.mail.*;
    import javax.mail.event.*;
    import javax.mail.internet.*;
     
    public final class MailerBean extends Object implements Serializable {
     
    	/* Bean Properties */
    	private String to = null;
    	private String from = null;
    	private String subject = null;
    	private String message = null;
    	public static Properties propss = null;
    	public static Session session = null;
     
    	static {
    		/*	Setting Properties for STMP host */
     
     
     
     
     
     
     
    		   Properties propss = (Properties)System.getProperties().clone();
    			propss.put("mail.smtp.host", "smtp.gmail.com");
                            propss.put("mail.smtp.port", "587");
    			propss.put("mail.transport.protocol", "smtp");
     
    			propss.put("mail.debug", "true");
    			propss.put("mail.smtp.auth", "true");
     
     
     
     
     
    			propss.put("mail.smtp.starttls.enable", "true");
     
     
    			Session s = Session.getInstance(propss, null);
    			s.setDebug(true);
     
     
     
    	}
    	/* Setter Methods */
    	public void setTo(String to) {
    		this.to = to;
    	}
     
    	public void setFrom(String from) {
    		this.from = from;
    	}
     
    	public void setSubject(String subject) {
    		this.subject = subject;
    	}
     
    	public void setMessage(String message) {
    		this.message = message;
    	}
    	/* Sends Email */
    	public void sendMail() throws Exception {
    		if(!this.everythingIsSet())
    			throw new Exception("Could not send email.");
    		try {
    			MimeMessage mes = new MimeMessage(session);
    			mes.setRecipient(Message.RecipientType.TO, 
    				new InternetAddress(this.to));
    			mes.setFrom(new InternetAddress(this.from));
    			mes.setSubject(this.subject);
    			mes.setText(this.message);
    			Transport.send(mes);
    		} catch (MessagingException e) {
    			throw new Exception(e.getMessage());
    		}
    	}
     
    	/* Checks whether all properties have been set or not */
    	private boolean everythingIsSet() {
    		if((this.to == null) || (this.from == null) || 
    		   (this.subject == null) || (this.message == null))
    			return false;
     
    		if((this.to.indexOf("@") == -1) ||
    			(this.to.indexOf(".") == -1))
    			return false;
     
    		if((this.from.indexOf("@") == -1) ||
    			(this.from.indexOf(".") == -1))
    			return false;
     
    		return true;
    	}
    }
    je recois l erreur : Could not connect to SMTP host: localhost, port: 25

    J ai beaucoup cherche dans des forums et j ai compris qu il faut configure le fichier web.xml, ce que j ai fait, j ai ,en fait, ajoute le code suivant a mon fichier web.xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <resource-ref>
      <res-ref-name>MySession</res-ref-name>
      <res-type>javax.mail.Session</res-type>
      <res-auth>Container</res-auth>
    </resource-ref>
    Puis j ai rajoute a installed-files.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <Resource name="mail/Session" auth="Container" type="javax.mail.Session"/>
      <ResourceParams name="mail/Session">
        <parameter>
          <name>mail.smtp.host</name>
          <value>mail.gmail.com</value>
        </parameter>
        <parameter>
          <name>mail.smtp.port</name>
          <value>25</value>
        </parameter>
      </ResourceParams>
    Et je recois toujours la meme erreur Plz plz j ai besoin de votre aide merci les amis

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 096
    Par défaut
    Si tu vx utiliser GMAIL il faut utiliser TLS.

    regarde ici par exemple : http://www.developpez.net/forums/d60...ppender-gmail/ ca t'aiguillera peut etre.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Expert confirmé
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 419
    Par défaut
    Citation Envoyé par wax78 Voir le message
    Si tu vx utiliser GMAIL il faut utiliser TLS.

    regarde ici par exemple : http://www.developpez.net/forums/d60...ppender-gmail/ ca t'aiguillera peut etre.
    Non.

    Son code est correct, on peut attaquer le SMTP de Google par le port 587 avec SMTP-AUTH sans passer directement par TLS.

    Ceci dit, pour moi ton problème est assez simple, tu as un membre Session appelé session, c'est lui qui te sert de base pour créer ton MimeMessage.
    Tu fais tes modifs de propriétés systèmes dans une instance de Session différente que tu appelles s et que tu n'affectes jamais à ton membre.

    Donc c'est normal que ton mail parte sur le port SMTP par défaut à savoir le 25.

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 096
    Par défaut
    Tu as probablement raison pour le TLS mais il n'empeche qu'il doit configurer pour ne pas utiliser le port 25 comme tu le dis.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 13
    Par défaut
    D apres vos commentaire voila ce que j ai fait


    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
    package test;
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
     
    import java.io.*;
    import java.util.*;
    import javax.mail.*;
    import javax.mail.event.*;
    import javax.mail.internet.*;
     
    public final class MailerBean  extends Object implements Serializable {
     
    	/* Bean Properties */
            String  d_email = "monemail@gmail.com",
                d_password = "monpassword",
                d_host = "smtp.gmail.com",
                d_port  = "465",
                m_to = "desitinataire@gmail.com";
     
    	private String subject;
            	private String message;
     
     
     
     
    	public MailerBean() {
                        Properties props = new Properties();
                        props.put("mail.smtp.user", d_email);
            props.put("mail.smtp.host", d_host);
            props.put("mail.smtp.port", d_port);
            props.put("mail.smtp.starttls.enable","true");
            props.put("mail.smtp.auth", "true");
            //props.put("mail.smtp.debug", "true");
            props.put("mail.smtp.socketFactory.port", d_port);
            props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
            props.put("mail.smtp.socketFactory.fallback", "false");
     
            SecurityManager security = System.getSecurityManager();;
    	}
    	/* Setter Methods */
     
    public void setSubject(String subject) {
    		this.subject = subject;
    	}
     
    	public void setMessage(String message) {
    		this.message = message;
    	}
     
    	/* Sends Email */
    	public void sendMail() throws Exception {
     
     
    		try {
                        		   Properties props = (Properties)System.getProperties().clone();
                         Authenticator auth = new SMTPAuthenticator();
                                     Session session = Session.getInstance(props, auth);
     
     
     
                MimeMessage msg = new MimeMessage(session);
                msg.setText(this.message);
                msg.setSubject(this.subject);
     
                msg.setFrom(new InternetAddress(d_email));
                msg.addRecipient(Message.RecipientType.TO, new InternetAddress(m_to));
                Transport.send(msg);
            }
            catch (Exception mex)
            {
                mex.printStackTrace();
            } 
        }
     
     
              public static void main(String[] args)
        {
            MailerBean blah = new MailerBean();
        }
     
        private class SMTPAuthenticator extends javax.mail.Authenticator
        {
     
            public PasswordAuthentication getPasswordAuthentication()
            {
                return new PasswordAuthentication(d_email, d_password);
            }
        }
    }

    N oublions pas que j ai une class mailer.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
    <html>
    <head>
    	<style>
    	div,input,textarea { font-family:Tahoma; font-size:8pt; }
    	input.std { width:200; }
    	div.frame { padding-left:70; color:green; }
    	</style>
    </head>
    <body>
    	<div class="frame">
    	<jsp:useBean id="mailer" class="test.MailerBean">
    		<jsp:setProperty name="mailer" property="*"/>
    		<% mailer.sendMail(); %>
    	</jsp:useBean>
    	Email has been sent successfully.
    	</div>
    </body>
    </html>
    et une autre index.html
    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
    <html>
    <head>
    	<style>
    	div,input,textarea { font-family:Tahoma; font-size:8pt; }
    	input.std { width:200; }
    	div.frame { padding-left:70; }
    	</style>
    </head>
    <body>
     
    <div class="frame">
    	<form action="mailer.jsp" method="post">
     
    	Subject :<br>
    	<input type="text" name="subject" class="std"></input><br>
    	Message :<br>
    	<textarea rows="10" cols="80" name="message"></textarea>
    	<br>
    	<input type="submit" value="Send"></input>
    	</form>
    </div>
     
    </body>
    </html>


    Je recois l erreur le message "Email has been sent successfully"

    je ne recois rien dans ma boite email
    glassfish retourne une erreur : 530-5.5.1 Authentication Required!!



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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par aminaR Voir le message
    Je recois l erreur le message "Email has been sent successfully"

    je ne recois rien dans ma boite email
    glassfish retourne une erreur : 530-5.5.1 Authentication Required!!


    Ton message n'a rien à voir avec ton code, c'est pas parce que t'arrive a afficher ton jsp que l'email a bien été envoyé. De plus, dans ton coden, encore une fois, les Proprties que tu crée dans ton constructeur, tu ne l'utilise pas, encore ue fois tu crée une session avec les paramètre par défaut de la jvm et donc, sans authentification, sur un serveur j'ai pas la moindre idée duquel, mais vraisemblablement pas celui qui est référencé dans le bean.

  7. #7
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 096
    Par défaut
    Vraiment au hasard changer cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Properties prop=new Properties();
    par ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Properties prop=System.getProperties();//defining system properties
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    tu mélange un peut tout dans ton code.

    Premièrement, nulle part tu n'utilise une session mail qui erait fournie par le conteneur, il n'y a donc pas lieu de configurer ton web.xml et ton tomcat pour fournir une session mail (ton code crée sa propre session).


    Deuxièmement, ton code d'initialisation statique ne sert à rien. Il crée une session pour immédiatement la jeter:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    			Session s = Session.getInstance(propss, null);
    			s.setDebug(true); 			
    	} // a partir de ce point, "s"  n'existe plus!
    Troisièmement, tu appele directement la méthode statique Transport.send(mes) qui utilise sa propre session en utilisant les propriétés système (donc par défaut localhost).


    Pour envoyer le mail correctement, il faut au minimum que tu crée une Session avec tes propriétés, et que tu utilise la méthode getTransport().sendMessage(message,recipients) sur cette session.

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

Discussions similaires

  1. [Java mail] probleme de cast
    Par ulquiorra dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 12/07/2010, 15h08
  2. probleme avec java mail
    Par hypothese dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 23/09/2008, 22h04
  3. probleme sur l'api java.mail
    Par hamster. dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 16/07/2008, 09h40
  4. [Mail] Probleme pour l'envoi de mails avec mime
    Par tof91 dans le forum Langage
    Réponses: 1
    Dernier message: 09/03/2006, 16h44
  5. [Mail] Probleme fonction mail()
    Par tissot dans le forum Langage
    Réponses: 1
    Dernier message: 14/11/2005, 12h55

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