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

Entrée/Sortie Java Discussion :

[Prob] Envoi de mail avec JavaMail


Sujet :

Entrée/Sortie Java

  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 389
    Points : 227
    Points
    227
    Par défaut [Prob] Envoi de mail avec JavaMail
    Bonjour a tous,

    je suis entrain d'apprendre a utilisé l'API javaMail.
    Pour mon soft, j'ai juste besoin de pouvoir envoyé un mail (donc SMTP seulement).

    Le problème que je rencontre est assez bizarre. En faite, si l'adresse de l'expediteur et du destinataire sont identique, pas de probleme, le mail est bien envoyé.

    Par contre dans le cadre d'une utilisation standard (expediteur et destinataire different), j'ai un problème. Je me retrouve avec une erreur de ce type:

    //La connexion au serveur SMTP fonctionne bien


    MAIL FROM:<adresse@hotmail.fr>
    553 From address not verified - see <lien url="http://help.yahoo.com/l/us/yahoo/mail/original/manage/sendfrom-07.html">http://help.yahoo.com/l/us/yahoo/mail/original/manage/sendfrom-07.html</lien>
    DEBUG SMTP: got response code 553, with response: 553 From address not verified - see <lien url="http://help.yahoo.com/l/us/yahoo/mail/original/manage/sendfrom-07.html">http://help.yahoo.com/l/us/yahoo/mail/original/manage/sendfrom-07.html</lien>

    RSET
    250 flushed
    com.sun.mail.smtp.SMTPSendFailedException: 553 From address not verified
    (dans mon exemple l’expéditeur a une adresse yahoo et le destinataire une adresse hotmail )

    Voici mon code pour effectué l'envoie:
    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
     
    try {
     
    				Properties prop = new Properties();
    				prop.put("mail.smtp.host",f.getServeur().getText()); // ici smtp.mail.yahoo.fr
    				prop.put("mail.smtp.port", f.getPort().getText()); // ici 465
    				prop.put("mail.smtp.auth", "true");
    				prop.put("mail.debug", "true");
    				prop.put("mail.smtp.user", f.getEnvoyeur().getText()); //ici adresse@yahoo.fr
    				prop.put("mail.smtp.password", f.getMdp().getText()); //ici unMotDePasse
    				System.out.println(f.getSslOK().isSelected());
    				if(f.getSslOK().isSelected()){ //checkbox permettant de savoir si le ssl doit etre activé ou non
    					//ici il faut un support ssl
    					System.out.println("ssl");
    					prop.put("mail.smtp.ssl.enable", true);
    				}
    				else{
    					//ici pas de support ssl
    					System.out.println("pas ssl");
    					prop.put("mail.smtp.ssl.enable", false);
    				}
     
     
    				MailAuth ma=new MailAuth(f.getEnvoyeur().getText(), f.getMdp().getText());
    				Session session = Session.getDefaultInstance(prop,ma);
    				session.setDebug(true);
    				Message message = new MimeMessage(session);
    				message.setFrom(new InternetAddress(f.getEnvoyeur().getText()));
     
    				InternetAddress[] internetAddresses = new InternetAddress[1];
    				internetAddresses[0] = new InternetAddress(f.getDestinataire().getText());
    				message.setRecipients(Message.RecipientType.TO,internetAddresses);
    				message.setSubject("Test");
    				message.setText("test mail");
    				message.setSentDate(new Date());
    				Transport.send(message);
     
    			} catch (AddressException e1) {
    					e1.printStackTrace();
    					return false;
    			} catch (MessagingException e1) {
    					e1.printStackTrace();
    					return false;
    			}
    			return true;

    et ma class MailAuth
    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
    package traitement;
     
    import javax.mail.Authenticator;
    import javax.mail.PasswordAuthentication;
     
    /**
     * Class permettant de gérer l'objet d'authentification
     * d'un utilisateur sur un serveur SMTP
     * @author hannibal
     *
     */
    public class MailAuth extends Authenticator{
     
    	/**
             * Contient l'adresse mail de l'utilisateur
             */
    	private String addresse;
     
    	/**
             * Contient le mot de passe de l'utilisateur
             */
    	private String mdp;
     
     
    	public MailAuth(String adresse,String mdp){
    		this.addresse=adresse;
    		this.mdp=mdp;
    	}
     
        @Override
    	public PasswordAuthentication getPasswordAuthentication(){
    		return new PasswordAuthentication(addresse, mdp);		
    	}
     
    }


    Donc si vous avez une idée d'ou vient le problème.... car la je n'ai aucune idée.

    Je vous remercie d'avance pour votre aide

  2. #2
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 389
    Points : 227
    Points
    227
    Par défaut
    J'ai trouvez une solution !!!
    au lieu d'utilisé la méthode static send() de la class transport, j'ai créer un objet transport:

    Voici le nouveau code

    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
     
    Properties prop = new Properties();
    prop.put("mail.smtp.host",f.getServeur().getText());
    prop.put("mail.smtp.port", f.getPort().getText());
    prop.put("mail.smtp.auth", "true");
    prop.put("mail.debug", "true");
    prop.put("mail.smtp.user", f.getEnvoyeur().getText());
    prop.put("mail.smtp.password", f.getMdp().getText());
    if(f.getSslOK().isSelected()){
    	//ici il faut un support ssl
    	prop.put("mail.smtp.ssl.enable", true);
    }
    else{
    	//ici pas de support ssl
    	prop.put("mail.smtp.ssl.enable", false);
    }
     
     
    MailAuth ma=new MailAuth(f.getEnvoyeur().getText(), f.getMdp().getText());
    Session session = Session.getDefaultInstance(prop,ma);
    session.setDebug(true);
    Message message = new MimeMessage(session);
    message.setFrom(new InternetAddress(f.getEnvoyeur().getText()));
     
    InternetAddress[] internetAddresses = new InternetAddress[1];
    internetAddresses[0] = new InternetAddress(f.getDestinataire().getText());
    				message.setRecipients(Message.RecipientType.TO,internetAddresses);
    message.setSubject("Test");
    message.setText("test mail");
    message.setSentDate(new Date());
     
    Transport t=session.getTransport("smtp");
    t.connect();
    t.sendMessage(message, internetAddresses);
    t.close();
    Par contre, j'ai un second problème, si je rappel ma méthode en changeant n'importe quel donnée (adresse du serveur smtp, support ssl, etc ...), les premier paramètre sont toujours utilisé....

    Une idée de la provenance du problème ?



    EDIT: j'ai trouver la source de mon problème. En fait elle viens de la session
    Session.getDefaultInstance(prop,ma); --> Session.getInstance(prop,ma);

    le getDefaultInstance permet d'avoir une session partagée

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

Discussions similaires

  1. Envoi de mail avec Javamail
    Par kodo dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 10/10/2012, 14h27
  2. [javamail] Envoi de mail avec plusieurs images
    Par RamyBoulet dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 21/09/2009, 12h32
  3. [JavaMail] Problème d'authentification pr l'envoi de mail avec Yahoo
    Par hikamovic dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 07/06/2009, 13h51
  4. Envoi de mail avec javamail
    Par Heavy Metal Hero dans le forum Général Java
    Réponses: 4
    Dernier message: 03/06/2009, 15h54
  5. Réponses: 1
    Dernier message: 21/02/2007, 11h49

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