Bonjour tout le monde,

J'ai à cette heure travaillé avec deux codes sources pour l'envoi de mails.
Le premier

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
 
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
 
public class SendMailTest {
    MyLogger logger;
    String serveur = "smtp.societe.com";
 
    public SendMailTest() {
    }
 
    public boolean doIt(String emailTo, String subject, String messageText, boolean debug) {
        boolean result = false;
        String emailFrom = "caddy@societe.com";
 
        try {
            System.out.println("Envoi d'un mail à \'"+emailTo+"\'...");
            System.out.println("Objet : "+subject);
            System.out.println("Intitulé : "+messageText);
            Properties props = System.getProperties();
            props.put("mail.smtp.host", serveur);
            props.put("mail.smtp.auth", "true");
            props.put("mail.smtp.port", "25");
            props.put("mail.smtp.socketFactory.port", "25");
            //props.put("mail.smtp.starttls.enable","true");
            props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
            props.put("mail.smtp.socketFactory.fallback", "false");
            Session session = Session.getDefaultInstance(props, new MyAuthenticator());
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress(emailFrom));
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(emailTo));
            message.setSubject(subject);
            message.setText(messageText);
            Transport.send(message);
            result = true;
            Fichier.getInstance().ecrireFichier(Fichier.fichierMail, "Mail envoyé");
            System.out.println("Mail envoyé");
        } catch (AddressException e) {
            Fichier.getInstance().ecrireFichier(Fichier.fichierMail, e.getMessage());
            e.printStackTrace();
        } catch (MessagingException e) {
            Fichier.getInstance().ecrireFichier(Fichier.fichierMail, e.getMessage());
            e.printStackTrace();
        } catch (Exception e) {
            Fichier.getInstance().ecrireFichier(Fichier.fichierMail, e.getMessage());
            e.printStackTrace();
        }
        return result;
    }
 
    public class MyAuthenticator extends javax.mail.Authenticator {
        @Override
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication("caddy@societe.com", "mot_de_passe");
        }
    }
 
    public static void main(String[] args) {
        SendMailTest s = new SendMailTest();
        s.doIt("trucmuche@yahoo.fr", "Ceci est un test Javamail", "test Javamail",true);
    }
}
me permet de travailler uniquement avec le serveur smtp de gmail (serveur smtp.gmail.com, port 465). Quand j'essaie de configurer le code pour un autre serveur (les paramètres m'ont été communiqués par l'administrateur) tel que décrit dans le code, j'ai le message suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
javax.mail.SendFailedException: Sending failed;
  nested exception is: 
        javax.mail.MessagingException: Could not connect to SMTP host: smtp.societe.com, port: 25
        at javax.mail.Transport.send0(Transport.java:218)
        at javax.mail.Transport.send(Transport.java:80)
        at mailSender.SendMailTest.doIt(SendMailTest.java:50)
        at mailSender.SendMailTest.main(SendMailTest.java:76)
Le deuxième

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
 
import org.openide.util.Exceptions;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
 
public class Mail {
 
    /** Type texte brut */
    static public final int TEXT = 0;
    /** Type text/html */
    static public final int HTML = 1;
    /** Adresse "no-reply" par défaut de l'entreprise */
    private static final String NOREPLY = "caddy@societe.com";
    /** Adresse du serveur SMTP de l'entreprise */
    private static final String SMTPHOST = "smtp.societe.com";
    private Properties props;
    private Session session;
    private MimeMessage mm;
    private int mimetype;
 
    private boolean noreply = true;
 
    public Mail() {
        //Par défaut en texte brut
        mimetype = TEXT;
 
        //Get system properties
        props = System.getProperties();
        //Setup mail server
        props.put("mail.smtp.host", SMTPHOST);
        //Get session
        session = Session.getDefaultInstance(props, null);
        //Define message
        mm = new MimeMessage(session);
    }
 
    public void setFrom(String expediteur) throws Exception {
        if (expediteur.trim().length() > 0) {
            mm.setFrom(new InternetAddress(expediteur));
            noreply = false;
        }
    }
 
    public void setTo(String destinataire) throws Exception {
        if (destinataire.trim().length() > 0) {
            mm.addRecipient(Message.RecipientType.TO, new InternetAddress(destinataire));
        }
    }
 
    public void setSujet(String sujet) throws Exception {
        mm.setSubject(sujet);
    }
 
    public void setMimeType(int mime) throws Exception {
        mimetype = mime;
    }
 
    public void setMessage(String message) throws Exception {
        if (mimetype == HTML) {
            mm.setContent(message, "text/html");
        } else {
            mm.setText(message);
        }
    }
 
    public void send() throws Exception {
        if (noreply) {
            setFrom(NOREPLY);
        }
        Transport.send(mm);
    }
 
    public static void main(String[] args) {
        try {
            Mail m = new Mail();
            m.setFrom("caddy@societe.com")
            m.setTo("trucmuche@yahoo.fr");
            m.setSujet("test");
            m.setMessage("Ceci est un test");
            m.send();
        } catch (Exception ex) {
            Exceptions.printStackTrace(ex);
        }
 
    }
}
me permet de travailler sans que je n'ai besoin de m'authentifier et me renvoie l'erreur suivante quand je travailler avec deux adresses différentes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
12 févr. 2011 11:55:12 org.openide.util.Exceptions printStackTrace
SEVERE: null
javax.mail.SendFailedException: Sending failed;
  nested exception is: 
        javax.mail.SendFailedException: Invalid Addresses;
  nested exception is: 
        javax.mail.SendFailedException: 553 sorry, that domain isn't allowed to be relayed thru this MTA (#5.7.1)
 
        at javax.mail.Transport.send0(Transport.java:218)
        at javax.mail.Transport.send(Transport.java:80)
        at mailSender.Mail.send(Mail.java:92)
        at mailSender.Mail.main(Mail.java:101)
J'ai compris que je ne peux envoyer des messages qu'au sein du même serveur mais j'aimerais bien avoir une solution dans les 2 cas. Car je sèche.

Merci d'avance.