JavaMail SMTP 非加密登录失败解决

DEBUG: setDebug: JavaMail version 1.5.2

DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]

DEBUG SMTP: useEhlo true, useAuth true

DEBUG SMTP: trying to connect to host "xxx", port 25, isSSL false

Exception in thread "main" com.sun.mail.util.MailConnectException: Couldn't connect to host, port: xxx, 25; timeout -1;

  nested exception is:

java.net.SocketException: Network is unreachable: connect

at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2053)

at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:697)

at javax.mail.Service.connect(Service.java:364)

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

或者修改配置文件

10fbcd6ba30143042af714ce6e86f8415ee.jpg

转载于:https://my.oschina.net/u/1035999/blog/392430

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值