Bonjour tout le monde,
J'ai à cette heure travaillé avec deux codes sources pour l'envoi de mails.
Le premier
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
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); } }
Le deuxième
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)
me permet de travailler sans que je n'ai besoin de m'authentifier
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); } } }et me renvoie l'erreur suivante quand je travailler avec deux adresses différentes.
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.
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)
Merci d'avance.
Partager