我有一個使用javax.mail發送SMTP消息的Java程序。這個程序在Linux上運行良好,我想事先強調一下。當我嘗試在我的Windows 7 x64系統中,這個相同的代碼,我得到這個錯誤:Java郵件神祕 - SMTP被阻止?
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);
這個程序非常使用默認的一切。它可以在同一網絡上的另一個盒子上正常工作。它使用我用於我的常規郵件客戶端的相同設置,該工作正常。這個Windows盒子上有一些阻止SMTP的東西,但只限於Java。
我安裝了Symantec(Norton)360。關閉它沒有任何區別,但重新啓動到安全模式(禁用幾乎所有內容)可以使程序正常工作併發送郵件。
因此,回顧一下:
- 程序代碼工作。
- 設置正確。
- SMTP適用於Windows Mail,並且僅在此Windows機器上被Java阻止。
在我花了一天把事情拆開並卸載/重新安裝之前,我想知道有沒有人有任何建議來解決這個問題?
如果從命令提示符嘗試telnet smtp.west.cox.net 25',會發生什麼情況? –
什麼版本的Windows? Windows防火牆是否活動? – Perception
由於您的代碼在安全模式下工作...它不是你的代碼。我懷疑Java不允許通過Windows防火牆。 –