Java邮件谜 - SMTP受阻?(Java Mail mystery - SMTP blocke

2019-07-17 15:44发布

我有一个使用javax.mail发送SMTP邮件的Java程序。 该程序适用于Linux机器很好,我想给事先强调。 当我尝试在我的Windows 7 x64系统中,这个相同的代码,我得到这个错误:

send failed, exception: javax.mail.MessagingException: Could not connect to SMTP host:     smtp.west.cox.net, port: 25;
nested exception is:  java.net.SocketException: Network is unreachable: connect

下面是代码:

Session session = Session.getInstance(props, null);
MimeMessage msg = new MimeMessage(session);
msg.setFrom();
msg.setRecipients(Message.RecipientType.TO, props.getProperty("mail.to", "me@mine.com"));
msg.setSubject(mySubject);
msg.setSentDate(new Date());
msg.setContent(sBuf.toString(), "text/html");
Transport.send(msg);

这个程序非常使用默认的一切。 它工作正常,在同一个网络上的另一盒。 它使用的是我用我的普通邮件客户端,它工作正常相同的设置。 在灯架上有Windows中被阻止SMTP东西,但只为Java。

我安装了赛门铁克(诺顿)360。 关闭它没有什么区别,但重新启动到安全模式(即禁用几乎所有)允许程序运行并发送邮件就好了。

因此,回顾一下:

  1. 该程序代码工作。
  2. 该设置是正确的。
  3. SMTP适用于Windows Mail和仅阻止对Java这个Windows机器上。

我花前一天撕开的东西和卸载/重装,我想知道是否有人对解决这个有什么建议?

Answer 1:

该问题是由于对Java的IPv4 / IPv6的偏好。 Java的默认通过使用IPv6(?)和我的ISP不支持IPv6。 然而,它在我的Windows 7盒默认情况下启用。

如果遇到类似的行为,可以通过从上下文菜单中进入“控制面板/网络和互联网/网络连接”,右键单击您的Internet连接,并选择“状态”对此进行验证。 状态对话框将显示类似如下的两行:

IPv4 Connectivity:  Internet
IPv6 Connectivity:  No Internet access

这是问题的根源 - 的Java喜欢的IPv6,它不能用来连接到互联网。

为了解决这个问题,做这些事情任何一个(或两者):

  1. 禁用您的Windows 7盒的IPv6。
  2. 使用此命令行选项启动Java程序:

     -Djava.net.preferIPv4Stack=true 

这样做的两者之一将解决这个问题。



Answer 2:

我不得不升级形式的Java 1.6中同样的问题到Java 1.7。 因为使用IPv6默认的Java 1.7的问题发生。 为了解决这个问题,就需要添加Java选项像下面的例子。

只是在Windows上运行CMD命令:

**setx _JAVA_OPTIONS -Djava.net.preferIPv4Stack=true**


Answer 3:

Synantec EP 12.1 RU5解决您的问题。

的Symantec Endpoint Protection块由Java的邮件客户端发送电子邮件

修复ID:3399185

症状:由Java邮件客户端发送的Symantec Endpoint Protection块SMTP邮件的Internet电子邮件自动防护功能。

解决方法:更新了Internet电子邮件自动防护驱动程序,允许IPv4映射的IPv6地址的处理。



Answer 4:

我也面临着同样的问题,基本上是一个Java 7的问题,只是在通过JVM参数“-Djava.net.preferIPv4Stack = true”时,我接到了问题除掉。



Answer 5:

虽然这个问题就解决了:它可能仍然是有用指出,某些Windows防火墙拦截/允许基于可执行文件的名称(而不是纯粹的端口号本身)对端口的访问 - 这样你就可以用一个程序结束(比如说展望)被允许和另一个(说的Java)被封锁。



Answer 6:

我有类似的问题,但奇怪的是一切工作的罚款JDK 1.6,一旦我安装JDK 1.7,我得到了异常。 我想这可能是这样做的原因!

加入IPV4经过论证,它正在fine..Thank你这么多。



文章来源: Java Mail mystery - SMTP blocked?