【问题标题】:Connection time out exception while sending mail through Java Mail API [closed]通过Java Mail API发送邮件时连接超时异常[关闭]
【发布时间】:2014-10-08 01:30:42
【问题描述】:
        Properties props = new Properties();
        props.put("mail.smtp.starttls.enable", "true"); 
        props.put("mail.smtp.host", SMTPHost);
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.port", "587"); 
        Authenticator Auth= new MailAuthenticator();
        Session session = Session.getInstance(props, Auth);
        MimeMessage msg = new MimeMessage(session);
        //
        //
        Transport.send(msg);

邮件大部分时间发送成功,但有时不发送,tomcat显示

        javax.mail.MessagingException: Could not connect to SMTP host: "SMTPHost - IP "     , port: 587;

嵌套异常是: java.net.ConnectException:连接超时:连接

此消息每隔几个小时就会出现在 Tomcat 日志中。

javax.mail.MessagingException:异常读取响应; 嵌套异常是: java.net.SocketException:连接重置

    This message also appears rarely in a day.

非常感谢任何帮助。谢谢。

【问题讨论】:

  • 我认为您应该向您的 ISP 支持服务寻求帮助
  • 也许尝试找出您的邮件服务器拒绝连接的原因...检查日志...
  • 我已经联系了他们。他们说,从他们的角度来看,这似乎很好。发送电子邮件的响应时间总是需要更多时间(单击按钮后发送电子邮件并重定向到成功页面需要 1 分钟或更长时间,有时根本不发送电子邮件),所以我不确定它是否会出现问题我的 Java 代码或防火墙阻止了某些东西或其他任何东西..:(
  • 连接超时正是它所说的。它很少是纯 Java 代码错误。如果您经常使用同一台服务器并且偶尔会出错,则更有可能是网络故障,服务器因为繁忙而拒绝连接,或者甚至是负载平衡服务将请求转发到无法响应的服务器。
  • 效果很好。切换到新的 SMTP 主机后,我们在过去几周面临这个问题,自动 Java 邮件(只是短信)需要很长时间(超过一分钟,页面只是加载)发送并重定向到成功响应页面,有时连接超时/reset Tomcat 日志中的错误。如果是 Java 代码错误,我可以在代码中检查哪些内容? :)

标签: java email tomcat jakarta-mail


【解决方案1】:

Java 邮件 API 中有 2 种方法 Transport.send() 和 Transport.sendMessage() 可用。 你可以阅读Difference between Transport methods send and sendMessage

尝试创建自己的传输对象并使用 sendMessage() 发送多条消息。

使用 Transport.send() 可能是自动 java 邮件花费更多时间的原因。

如果不是上述情况,那么问题出在网络上。

【讨论】:

  • 我在我的 java 代码中使用了下面的行 session.setDebug(true);我得到了 javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc] DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: 试图连接到主机“xxx.xxx.xxx.xx”,端口 587,isSSL false DEBUG SMTP:异常读取响应:java.net.SocketException:连接重置我 javax.mail.MessagingException:异常读取响应;嵌套异常是:java.net.SocketException: Connection reset after "isSSL false", it simple hang.
  • 有时会更进一步,220 xxxxx.xxx.com Microsoft ESMTP MAIL 服务于 2014 年 8 月 15 日星期五准备就绪 xxx 调试 SMTP:连接到主机“xxx.xxx.xxx.xx”,端口:587稍后电子邮件发送成功
  • 我们的意思是说您仍然面临问题还是问题已解决?
【解决方案2】:

尝试增加获取连接的超时时间。可能是在加载期间,应用无法在指定时间内获得连接,并抛出异常。

【讨论】:

    猜你喜欢
    • 2012-05-09
    • 2013-01-04
    • 2023-03-25
    • 2018-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多