Я использую JavaMail для отправления почтовых запросов к серверу SMTP.
Я хотел бы установить и "mail.smtp.connectiontimeout" и "mail.smtp.timeout" свойства в рамках моего кода.
Программно, я хочу поймать и когда тайм-аут и connectiontimeout операции достигнуты в Java и обрабатывают вещи соответственно. Обрабатывая в смысле, я должен повторить ту же электронную почту еще раз в следующий раз.
Как я обрабатываю это в Java/JavaMail? Действительно ли возможно поймать и обработать этот тайм-аут операции?
Править
Кроме того, действительно ли возможно моделировать/воспроизвести эту операцию тайм-аута на моем собственном предположении, что у меня есть полный административный доступ к серверу SMTP?
Все:
Отвечаю на свой вопрос, после того как испытал это на себе.
Как мне справиться с этим в Java/JavaMail? Можно ли перехватить и обработать эту таймаут операции?
Да, он автоматически выбрасывается как javax.mail.MessagingException.
javax.mail.MessagingException: Exception reading response;
nested exception is:
java.net.SocketTimeoutException: Read timed out
at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:1462)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1260)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:370)
at javax.mail.Service.connect(Service.java:297)
at javax.mail.Service.connect(Service.java:156)
at javax.mail.Service.connect(Service.java:105)
Это исключение возникает именно в этой строке:
Transport.connect();
Единственный открытый вопрос, который у меня сейчас есть: "Возможно ли смоделировать/воспроизвести эту операцию таймаута самостоятельно, предполагая, что у меня есть полный административный доступ к SMTP серверу?"
Есть идеи от экспертов?