Я использую JavaMail для подключения к серверу POP3.
Далее, я установил следующие свойства, чтобы JavaMail долго не ждал, если почтовый сервер не отвечает:
props.setProperty("mail.pop3.connectionpooltimeout", "3000");
props.setProperty("mail.pop3.connectiontimeout", "3000");
props.setProperty("mail.pop3.timeout", "3000");
Однако в некоторых случаях тайм-аут работает правильно, но иногда JavaMail зависает на минуты (!) Со следующим сообщением отладки:
DEBUG POP3: connecting to host "pop3.yahoo.com", port 110, isSSL false
Изменение портов или протоколов (SSL, TLS ..) не имеет никакого эффекта. Я предполагаю, что хост просто не существует.
Например, , если я опрошу pop3.yahoo.com вместо pop.mail.yahoo.com (это будет правильное имя хоста), мне придется ждать очень долго, пока не произойдет исключение тайм-аута ,
Через несколько минут я получаю следующее исключение, и приложение продолжает работать:
java.net.ConnectException: Operation timed out
pop3.yahoo.com, кажется, существует, но не отвечает:
localhost:~ me$ ping pop3.yahoo.com
PING pop3.yahoo.com (206.190.46.10): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3
^C
Вы можете спросить, почему я использую pop3.yahoo.com вместо pop.mail.yahoo.com.
Я просто хотел проверить, что произойдет, если пользователь моего приложения введет неправильное имя хоста.
Я считаю, что эта проблема связана с этим отчетом http://www.opensubscriber.com/message/javamail-interest@java.sun.com/180946.html, где автор утверждает, что проблема возникает, если почтовый сервер закрывает соединение. JavaMail, кажется, ждет очень долго (не знаю почему).
Поскольку проблема не была решена по ссылке, которую я разместил: кто-нибудь знает, как это исправить или хотя бы отладить?
Любая помощь будет очень ценится !