P S*_*tro 2 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("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;
Run Code Online (Sandbox Code Playgroud)
大约需要 7 秒,没有任何失败。由于默认情况下是无限的,所以很可能它没有以某种方式设置
是否缺少任何属性或其他内容?
这些属性mail.smtp.connectiontimeout仅mail.smtps.connectiontimeout在建立连接时适用。它与运输过程中的任何超时无关。
属性mail.smtp.timeout和mail.smtps.timeout与等待读取的阻塞时间有关。这与读取 SMTP 响应代码有关。
属性mail.smtp.writetimeout和mail.smtps.writetimeout与写入大小不同的数据块有关。
这些超时都不代表发送 mime 消息的单个事务的截止时间。发生的情况是没有任何单个操作(连接、读取、写入)超过 3000 毫秒。
例如,连接可能需要 1000 毫秒,然后是 30 个请求(写入)和响应解析(读取),需要 100 毫秒,并且由于网络速度和大小而需要 3 个写入来发送消息,每个写入需要 1000 毫秒。消息。即 1000 + (30 * 100) + (3 * 1000) = 7000ms 总时间,但没有单个操作超过超时时间。
在测试环境中
connectimeout为 1 并测试。您应该看到连接失败。timeout。您应该看到读取失败。writetimeout。您应该看到传输失败。如果测试没有按照这种方式进行,则说明您没有正确设置属性(拼写错误或 smtp 与 smtps)。或者你真的很幸运有这么低的延迟。
| 归档时间: |
|
| 查看次数: |
2897 次 |
| 最近记录: |