【发布时间】:2013-09-16 19:54:17
【问题描述】:
尝试通过 javax.mail 发送邮件:
Properties props = new Properties();
props.put("mail.smtp.host", "xxxxx");
props.put("mail.smtp.port", "25");
props.put("mail.smtp.auth", "false");
Session session = Session.getInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("xx", "xx");
}
});
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("xxxxx"));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("xxxxx"));
message.setSubject("Subject");
message.setText("Body");
Transport.send(message);
System.out.println("Done");
} catch (MessagingException e) {
throw new RuntimeException(e);
}
抛出异常
Exception in thread "main" java.lang.RuntimeException: javax.mail.MessagingException: Could not connect to SMTP host: srv-mail.imb.invention.com, port: 25;
nested exception is:
java.net.SocketException: Network is unreachable: connect
at foo.SendMailTest.main(SendMailTest.java:41)
Caused by: javax.mail.MessagingException: Could not connect to SMTP host: xxx.xxxx.zzzzz.com, port: 25;
nested exception is:
java.net.SocketException: Network is unreachable: connect
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1961)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:654)
at javax.mail.Service.connect(Service.java:295)
at javax.mail.Service.connect(Service.java:176)
at javax.mail.Service.connect(Service.java:125)
at javax.mail.Transport.send0(Transport.java:194)
at javax.mail.Transport.send(Transport.java:124)
at foo.SendMailTest.main(SendMailTest.java:36)
Caused by: java.net.SocketException: Network is unreachable: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:321)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:237)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1927)
... 7 more
可用服务器:
C:\work\test>nc.exe xxx 25
220 xxx.zzz.aaaaaaa.com Microsoft ESMTP MAIL Service ready at Thu, 12 Sep 2013 15:10:45 +0300
ping 也可以。
类似的 .net 代码按预期工作。
我不知道出了什么问题......
【问题讨论】:
-
你是否有任何机会在代理背后?
-
我正在尝试通过
telnet连接到您的电子邮件服务器的 25 和 587 端口(最常见的端口),但ping无法正常工作。您确定它现在正在接受连接吗? -
不,代理不存在。应该只能从我们的公司网络连接到此邮件服务器。不知道为什么会被 ping 通。
-
这个问题似乎与 Java 无关,您应该先尝试连接一个知名的邮件客户端(例如 Thunderbird),并首先排除是服务器接受连接的问题。
-
我已将 Outlook 连接到此服务器。我也有一些 .net 工具,它们使用这个服务器发送邮件(从我的电脑)。他们都工作正确。 :( 我还有“blat”程序,它也可以正常工作并通过该服务器发送邮件。
标签: java email jakarta-mail