我正在使用SMTP服务器并发现了一个问题。
1)SMTP服务器未关闭:在这种情况下,SMTP服务器正忙于同时连续处理电子邮件请求超过5分钟(我发送批量邮件)。在服务期间的某个时间点,它不会返回或抛出Java / JavaMail程序的任何异常。事实上,我实时经历过这种情况。如果我没有在我的代码中设置mail.smtp.timeout和mail.smtp.connectiontimeout属性,它将永远不会返回并进入无限状态。
如果我设置了mail.smtp.connectiontimeout和mail.smtp.timeout,我该怎么测试呢? 我们如何模拟/再现这种情况?有什么想法吗?
2)另一个问题是由网络问题引起的,我将请求发送到我的java代码的SMTP,并且它已排队。我不确定会发生什么(我没有java循环)但是SMTP会向同一个人发送多封电子邮件。是因为SMTP没有发回回复吗?代码是否应该在3000之后超时?
以下是我的代码
props.put("mail.smtp.timeout", 3000);
props.put("mail.smtp.connectiontimeout", 3000);
SMTPTransport transport = (SMTPTransport)session.getTransport("smtp");
/ do some message setting here /
transport.connect();
int SMTPCodeBeforeSendingMessage = transport.getLastReturnCode();
logger.debug("Connection Code for SMTP connection after connect before sending mesasge" + SMTPCodeBeforeSendingMessage);
transport.sendMessage(msg, msg.getAllRecipients());
String SMTPresponse = transport.getLastServerResponse();
logger.debug("SMTP resposne after sending message" + SMTPresponse);
transport.close();