JavaMail连接超时未按属性运行
Javax邮件版本使用1.6.2 手动设置JavaMailSender 我用mail.smtp.Timeout和mail.smtps.Timeout尝试了超时操作。JavaMail连接超时未按属性运行,java,jakarta-mail,connection-timeout,Java,Jakarta Mail,Connection Timeout,Javax邮件版本使用1.6.2 手动设置JavaMailSender 我用mail.smtp.Timeout和mail.smtps.Timeout尝试了超时操作。 我尝试了字符串和整数值3000 String timeOut = "3000"; Properties pros = new Properties(); pros.put("mail.smtp.timeout", timeOut); pros.put("
我尝试了字符串和整数值3000
String timeOut = "3000";
Properties pros = new Properties();
pros.put("mail.smtp.timeout", timeOut);
pros.put("mail.smtp.connectiontimeout", timeOut);
pros.put("mail.smtp.writetimeout", timeOut);
pros.put("mail.smtp.auth", "true");
pros.put("mail.smtp.starttls.enable", "true");
jmailSender.setJavaMailProperties(pros);
return jmailSender;
这大约需要7秒,没有任何故障。
因为默认情况下是无限的,所以很可能它并没有以某种方式设置
是否缺少任何属性或其他内容?这些属性仅在建立连接时适用。这与运输期间的任何超时无关
这些属性与被阻止等待读取的时间有关。这与读取SMTP响应代码有关
这些属性与写入大小不同的数据块有关
这些超时都不表示发送mime消息的单个事务的截止日期。发生的情况是,没有任何单个操作(连接、读取、写入)超过3000毫秒
例如,连接可能需要1000毫秒,然后是30次请求(写入)和100毫秒的响应解析(读取),以及3次写入以发送消息,由于网络的速度和消息的大小,每次都需要1000毫秒。即1000+(30*100)+(3*1000)=7000ms总时间,但没有任何单个动作超过超时
在测试环境中
connectimeout
设置为1并进行测试。您应该会看到连接失败timeout
设置为1来重新启动测试。您应该看到读取失败writetimeout
设置为1来重新启动测试。您应该看到传输失败connectimeout
设置为1并进行测试。您应该会看到连接失败timeout
设置为1来重新启动测试。您应该看到读取失败writetimeout
设置为1来重新启动测试。您应该看到传输失败