почему могло быть исключение тайм-аута соединения, если значение тайм-аута по умолчанию бесконечно?

Используйте spring JavaMailSender для отправки электронной почты, иногда есть исключения ниже

org.springframework.mail.MailSendException: Mail server connection failed; nested exception is com.sun.mail.util.MailConnectException: Couldn't connect to host, port: mail.foo.com, 25; timeout -1;
nested exception is:
java.net.ConnectException: Connection timed out. Failed messages: com.sun.mail.util.MailConnectException: Couldn't connect to host, port: mail.foo.com, 25; timeout -1;
  nested exception is:
java.net.ConnectException: Connection timed out
at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:432) ~[spring-context-support-4.2.6.RELEASE.jar!/:4.2.6.RELEASE]
at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:345) ~[spring-context-support-4.2.6.RELEASE.jar!/:4.2.6.RELEASE]
at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:340) ~[spring-context-support-4.2.6.RELEASE.jar!/:4.2.6.RELEASE]

Сначала я подумал, что, возможно, тайм-аут по умолчанию недостаточно велик, и я мог бы установить более длительное значение, чтобы избежать исключения. например

<prop key="mail.smtp.timeout">10000</prop>

но когда я читаю документ, я обнаруживаю, что значение тайм-аута по умолчанию равно infinite  введите описание изображения здесь

см. https://javamail.java.net/nonav/docs/api/com/sun/mail/smtp/package-summary.html.

Итак, если он бесконечен, он должен быть заблокирован навсегда, почему могло быть ConnectException?


person zhuguowei    schedule 18.06.2016    source источник


Ответы (1)


Поскольку ваш вопрос больше о том, почему вы получаете Connection timed out , когда значение тайм-аута по умолчанию бесконечно; мои 2 цента - это посмотреть на значение тайм-аута соединения операционной системы. Чтобы проверить или изменить это в Linux (я думаю, это по умолчанию 20 секунд), вы можете посмотреть это: Как просмотреть / изменить время ожидания подключения к сокету в Linux?

Даже если вы используете любую другую ОС, у вас должна быть возможность погуглить, как проверить или изменить это значение.

Однако это просто ответит на ваш вопрос, а не решит вашу проблему. Чтобы решить вашу проблему, вам нужно посмотреть на различные причины сбоя подключения (которые указаны в ссылке, предоставленной Roman C) и проверить, что не так. Чаще всего вы используете http / https, в то время как сервер разрешает другой, или есть проблема с портом или URL-адресом, если это не проблема брандмауэра со стороны сервера.

person ritesh.garg    schedule 18.06.2016