我正在使用tomcat运行Java Web应用程序,通过电子邮件将生成的报告发送给用户。 我能够发送电子邮件,但几个小时后服务器停止发送电子邮件,但出现以下错误。
javax.mail.MessagingException: Unknown SMTP host: mail.mydomain.co.uk;
nested exception is:
java.net.UnknownHostException: mail.mydomain.co.uk
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1970)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:642)
at javax.mail.Service.connect(Service.java:317)
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 com.turnkey.email.SendEmail.sendMail(SendEmail.java:119)
at com.turnkey.thread.CommunicationThread.run(CommunicationThread.java:399)
Caused by: java.net.UnknownHostException: mail.mydomain.co.uk
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:195)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at java.net.Socket.connect(Socket.java:478)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:319)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:233)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1938)
... 8 more
一段时间后,服务器再次开始发送电子邮件。
谁能告诉我可能是什么问题。 我该如何解决这个问题?
由于
答案 0 :(得分:6)
这看起来像是您的名称服务失败。 JDK无法查找主机名以查找其Internet地址。由于这有时而不是其他工作,它看起来像名称服务的间歇性失败。名称服务失败可能是由于您的本地操作系统出现故障,或者可能是由于某些网络故障导致与您的DNS服务器或其他名称服务服务器通信,或者可能是该DNS服务器或名称服务服务器出现故障本身。确定故障的确切原因需要一些调试。请注意,JDK会缓存名称服务器查找的结果一段时间,因此您需要将其纳入调试中。
答案 1 :(得分:4)
还要确保smtp主机名末尾没有空格,例如。 mail.google.comSPACEHERE。令人惊讶的是,这件事发生在我身上,最后在删除这个空间后,没有人抱怨smtp主机。电子邮件已成功发送
答案 2 :(得分:1)
为主机设置域名的IP地址而不是域名。 在cmd上使用nslookup mail.mydomain.co.uk查找ip地址。 它对我有用。
答案 3 :(得分:0)
特别适用于AIX或Linux OS环境, 我们需要在etc / hosts文件中添加主机名。 Windows操作系统,这可能适用于Windows系统,因为没有严格的安全检查,但AIX或Linux必须将主机名添加到etc / hosts文件以便ping SMTP服务器。
避免这样做可能导致未知主机问题