【发布时间】:2012-12-13 09:36:14
【问题描述】:
我有一个使用 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。
我安装了 Symantec (Norton) 360。关闭它没有任何区别,但重新启动到安全模式(几乎禁用所有功能)允许程序正常工作并发送邮件。
所以,回顾一下:
- 程序代码有效。
- 设置正确。
- SMTP 适用于 Windows Mail,并且仅在此 Windows 计算机上被 Java 阻止。
在我又花一天时间拆开东西并卸载/重新安装之前,我想知道是否有人对解决此问题有任何建议?
【问题讨论】:
-
如果您在命令提示符下尝试
telnet smtp.west.cox.net 25会发生什么? -
什么版本的 Windows? Windows 防火墙是否处于活动状态?
-
由于您的代码在安全模式下工作......这不是您的代码。我怀疑 Java 不允许通过 Windows 防火墙。
-
这个问题最好贴在ServerFault上。这是网络/操作系统问题,而不是编程问题。
-
测试端口 25 从 PUTTY (telnet) 连接到 SMTP 服务器。
标签: java smtp jakarta-mail