DEBUG: setDebug: JavaMail version 1.5.2java
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]windows
DEBUG SMTP: useEhlo true, useAuth truesocket
DEBUG SMTP: trying to connect to host "xxx", port 25, isSSL falseide
Exception in thread "main" com.sun.mail.util.MailConnectException: Couldn't connect to host, port: xxx, 25; timeout -1;测试
nested exception is:spa
java.net.SocketException: Network is unreachable: connect.net
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2053)blog
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:697)ip
at javax.mail.Service.connect(Service.java:364)get
at com.navinfo.wolverine.test.mail.MailApi.main(MailApi.java:74)
Caused by: java.net.SocketException: Network is unreachable: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:579)
at com.sun.mail.util.WriteTimeoutSocket.connect(WriteTimeoutSocket.java:107)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:312)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:236)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2019)
/********************************* 一条华丽的分割线 *************************************/
通过各类百度、各类谷歌,各类尝试 未果,奇怪的是之前能够正常运行的代码,竟然也报这个错 ~~~
无奈换个系统试试吧,将项目移到 Linux 上进行测试,我 KAO ,竟然没问题了。
Eclipse 、JDK 版本都是同样的,惟独平台不同,难道是JDK的问题。带着这个疑问,在Windows上将如今用的JDK1.7更换为JDK1.6。尼玛,太阳出来了,邮件发出去了。
总结:问题出在 JDK1.7 上。
2中解决办法:
一:若是是main方法:
/*
* jdk7+ 在安装有 IPv6 和 IPv4 的计算机上,会使用一种 IPv6 模拟的 IPv4, 而 windows
* 防火墙会把这种模拟的 IPv4 数据挡住。 因此要配置系统参数优先用IP4
*/
/*
* jdk7+ 在安装有 IPv6 和 IPv4 的 windows 系统上,JAVA默认使用IPV6,但系统只设置了ipv4的ip,因此咱们要设置程序使用IPV4
*/
System.setProperty("java.net.preferIPv4Stack", "true");
----------——-----------------------------————--------------------
二:直接给jdk 添加参数:-Djava.net.preferIPv4Stack=true
举例:
java -jar -Djava.net.preferIPv4Stack=true xxxx.jar
或者修改配置文件