4

我正在使用 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

一段时间后,服务器再次开始发送电子邮件。

谁能告诉我可能是什么问题。我该如何解决这个问题?

谢谢

4

4 回答 4

9

这看起来像是您的名称服务中的故障。JDK 无法查找主机名来查找其 Internet 地址。由于这有时有效,但有时无效,因此它看起来像是名称服务的间歇性故障。名称服务故障可能是由于您的本地操作系统中的某些故障,或者可能是由于与您的 DNS 服务器或其他名称服务服务器通信的某些网络故障,或者可能是该 DNS 服务器或名称服务服务器中的故障本身。确定失败的确切原因将需要一些调试。请注意,JDK 会将名称服务器查找的结果缓存一段时间,因此您需要在调试时将其考虑在内。

于 2013-03-22T22:18:02.347 回答
7

还要确保 smtp 主机名的末尾没有空格,例如。mail.google.comSPACEHERE 。令人惊讶的是,这发生在我身上,最后在删除这个空间后,没有抱怨 smtp host 。电子邮件已成功发送

于 2014-11-26T10:56:48.780 回答
1

为主机设置域名的IP地址而不是域名。在 cmd 上使用 nslookup mail.mydomain.co.uk 来查找 IP 地址。它对我有用。

于 2013-12-24T10:21:56.480 回答
0

特别是对于 AIX 或 Linux OS 环境,我们需要在 etc/hosts 文件中添加主机名.. 来解决这个问题。Windows 操作系统,这可能适用于 Windows 系统,因为没有严格的安全检查,但是 AIX 或 Linux 必须将主机名添加到 etc/hosts 文件才能 ping SMTP 服务器。

避免这样做可能会导致未知主机问题

于 2017-01-31T16:22:47.873 回答