通过Java Mail API发送邮件时连接超时异常

时间:2014-08-14 11:49:20

标签: java email tomcat javax.mail

        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:连接超时:connect

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

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

    This message also appears rarely in a day.

任何帮助真的很感激。感谢。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

java mail API中有两种方法可用Transport.send()和Transport.sendMessage()。 您可以阅读Difference between Transport methods send and sendMessage

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

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

如果不是这种情况,则问题出在网络上。