Envoi de courrier: java.net.SocketException: réseau inaccessible: connect
Essayez d'envoyer un mail via javax.mail:
Properties props = new Properties();
props.put("mail.smtp.host", "xxxxx");
props.put("mail.smtp.port", "25");
props.put("mail.smtp.auth", "false");
Session session = Session.getInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("xx", "xx");
}
});
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("xxxxx"));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("xxxxx"));
message.setSubject("Subject");
message.setText("Body");
Transport.send(message);
System.out.println("Done");
} catch (MessagingException e) {
throw new RuntimeException(e);
}
Il jeter l'exception
Exception in thread "main" java.lang.RuntimeException: javax.mail.MessagingException: Could not connect to SMTP host: srv-mail.imb.invention.com, port: 25;
nested exception is:
java.net.SocketException: Network is unreachable: connect
at foo.SendMailTest.main(SendMailTest.java:41)
Caused by: javax.mail.MessagingException: Could not connect to SMTP host: xxx.xxxx.zzzzz.com, port: 25;
nested exception is:
java.net.SocketException: Network is unreachable: connect
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1961)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:654)
at javax.mail.Service.connect(Service.java:295)
at javax.mail.Service.connect(Service.java:176)
at javax.mail.Service.connect(Service.java:125)
at javax.mail.Transport.send0(Transport.java:194)
at javax.mail.Transport.send(Transport.java:124)
at foo.SendMailTest.main(SendMailTest.java:36)
Caused by: java.net.SocketException: Network is unreachable: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:321)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:237)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1927)
... 7 more
Serveur disponible:
C:\work\test>nc.exe xxx 25
220 xxx.zzz.aaaaaaa.com Microsoft ESMTP MAIL Service ready at Thu, 12 Sep 2013 15:10:45 +0300
ping.
Similaire .net code fonctionne comme prévu.
Je n'ai aucune idées de ce qui va mal....
source d'informationauteur Sergey Azarkevich
Vous devez vous connecter pour publier un commentaire.
La réponse est: java préfèrent IPv6, mais quelque chose de mal avec elle dans notre société.
Ajout de la propriété
java.net.preferIPv4Stack=true
résout le problème.