什么阻止我的程序发送电子邮件?

我有一个Java程序,它使用javax.mail发送SMTP消息。 这个程序在Linux上运行FINE,我想事先强调一下。 当我在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", "[email protected]")); msg.setSubject(mySubject); msg.setSentDate(new Date()); msg.setContent(sBuf.toString(), "text/html"); Transport.send(msg); 

这个程序几乎使用默认设置。 它可以在同一networking上的另一个框上正常工作。 它使用我用于我的常规邮件客户端,相同的设置工作正常。 这个Windows盒子上有一些阻止SMTP的东西,但是只能用于Java。

我安装了Symantec(Norton)360。 closures它并没有什么区别,但重新启动到安全模式(禁用几乎所有的东西)都可以使程序工作并发送邮件。

所以,回顾一下:

  1. 程序代码工作。
  2. 设置是正确的。
  3. SMTP适用于Windows Mail,并且仅在此Windows机器上被Java阻止。

在我再花一天时间拆卸和卸载/重新安装之前,我想知道有没有人有任何build议来解决这个问题?

“无法连接到SMTP主机”和“networking无法访问”表明,根本原因是您的Windows机器无法连接到smtp.west.cox.net机器。 这可能是由于几个原因之一:

  • Windows机器无法parsingsmtp.west.cox.net到一个IP(不太可能的错误信息)
  • Windows机器没有路由到该服务器的IP
  • 服务器smtp.west.cox.net不接受从您的Windows服务器的连接(可能只有当您的Windows服务器来自不同的IP(从SMTP服务器的angular度来看)比您的Linux服务器)