【问题标题】:Unknown SMTP host未知的 SMTP 主机
【发布时间】:2013-03-10 17:26:36
【问题描述】:

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

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

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

谢谢

【问题讨论】:

  • 您发送的电子邮件是否合法?您可能需要联系您的服务提供商并确保他们没有限制您的互联网连接。
  • 我认为这个错误与服务提供商没有任何关系.... 错误是 Unknown SMTP host: mail.mydomain.co.uk 是否需要更改任何 SMTP 配置或者是否有发送配额限制电子邮件?
  • 嗯,根据你的说法,它工作了一段时间,然后停止工作,对吧?好吧,只有当您的网络因某种原因(一段时间后)中断时才会发生这种情况。
  • 但是还有其他应用程序正在运行以通过 Internet 进行通信,并且这些应用程序正在持续正常工作。
  • 其他服务是否访问同一个域 (mail.mydomain.co.uk)。

标签: java smtp jakarta-mail


【解决方案1】:

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

【讨论】:

  • 感谢您的回答...实时服务器上的应用程序正在生成错误,即javax.mail.MessagingException: Unknown SMTP host: mail.mydomain.co.uk;,但同时我可以从本地计算机为同一 SMTP 主机发送电子邮件.这就是你说的吗???
  • 是的,您的实时服务器遇到了问题,而您的本地计算机没有。这不是 mail.mydomain.co.uk 服务器的问题,而是名称服务的问题。名称服务是运行在每台机器上的代码和与之对话的网络服务的组合。在影响一台机器而不是另一台机器的任何地方都可能出现故障。
  • 面临同样的问题。 @Ali 你有没有做任何具体的事情来解决这个问题?
  • 我认为这个问题可能是由于在规定的时间内没有解决问题而导致的超时。我切换到快速连接,问题就消失了,当我切换到慢速连接时,我可以看到。不像你提到的那样每次都发生
【解决方案2】:

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

【讨论】:

  • 谢谢...将 .trim() 添加到我的属性文件阅读器中,以确保我不会再遇到此问题...
【解决方案3】:

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

【讨论】:

    【解决方案4】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-02
      • 1970-01-01
      • 1970-01-01
      • 2013-12-10
      • 2021-10-26
      相关资源
      最近更新 更多