Для отправки email используется метод
Transport.send(msg);
где Transport
- класс из пакета javax.mail
.
В коде это выглядит так:
try {
Session session = Session.getInstance(...);
Message msg = new MimeMessage(session);
...
Transport.send(msg);
} catch (Throwable e) {
logger.error("Exception : ", e);
} finally {
logger.info("Task ended");
}
и никаких ошибок в логах не появляется, но и до блока finally
выполнение тоже не доходит. При дебаге выполнение просто доходит до Transport.send(msg);
и как будто зависает - не доходит ни до catch
, ни до finally
. Firewall выключен. В чём причина этого "зависания"?
UPD
Судя по всему, это было из-за того, что по умолчанию таймаут установлен бесконечным. После установки таймаута:
props.put("mail.smtp.connectiontimeout", "60000"); // 60 seconds
props.put("mail.smtp.timeout", "60000");
в логах наконец начала появляться ошибка:
Exception :
javax.mail.MessagingException: Exception reading response;
nested exception is:
java.net.SocketTimeoutException: Read timed out
at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:2210)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1950)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:642)
at javax.mail.Service.connect(Service.java:297)
at javax.mail.Service.connect(Service.java:156)
at javax.mail.Service.connect(Service.java:105)
at javax.mail.Transport.send0(Transport.java:168)
at javax.mail.Transport.send(Transport.java:98)
...
Caused by: java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at com.sun.mail.util.TraceInputStream.read(TraceInputStream.java:110)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
at com.sun.mail.util.LineInputStream.readLine(LineInputStream.java:89)
at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:2188)
... 11 more
А в чём может быть причина этой ошибки?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Создал архив jar при помощи ANTКод сборки:
Нужно как-то в android приложении сделать так, чтобы при вызове void'a отключался телефон (полностью, не экран)Как это сделать? Подскажите, пожалуйста)