2016-06-18 2 views
0

Utilisez printemps JavaMailSender pour envoyer un courriel, parfois il y a des exceptions ci-dessousPourquoi la connexion a-t-elle dépassé l'exception si la valeur du délai d'attente par défaut est infinie?

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] 

Au début, je pensais que le délai d'attente par défaut est pas assez long, et je pourrais définir une valeur plus pour éviter l'exception. par exemple.

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

mais quand je lis le document que je trouve la valeur du délai defalt est infinite enter image description here

s'il vous plaît voir: https://javamail.java.net/nonav/docs/api/com/sun/mail/smtp/package-summary.html

Donc, si elle est infinie, il doit être bloqué pour toujours, pourquoi pourrait avoir ConnectException ?

+0

Copie possible de [Pourquoi une exception "java.net.ConnectException: Connection a expiré" se produit-elle lorsque l'URL est ouverte?] (Http://stackoverflow.com/questions/86824/why-would-a-java- net-connectexception-connexion-timed-out-exception-occurrence-wh) –

Répondre

0

Depuis votre question est plus sur pourquoi vous obtenez un Connection timed outlorsque la valeur de délai d'attente par défaut est infinie; mes 2 cents seraient de regarder la valeur de délai de connexion du système d'exploitation. Pour vérifier ou modifier cela dans Linux (qui est par défaut 20 secondes, je pense), vous pouvez jeter un oeil à ceci: How to view/change socket connection timeout on Linux?

Même si vous utilisez un autre système d'exploitation, vous devriez être capable de google autour de la façon dont pour vérifier ou modifier cette valeur.

Cependant, cela répondrait simplement à votre question et résoudra votre problème, pas. Pour résoudre votre problème, vous devez examiner différentes raisons d'échec de connexion (qui sont fournies dans le lien fourni par Roman C) et vérifier ce qui ne va pas. Le plus commun est que vous utilisez http/https tandis que le serveur permet l'autre ou il y a un problème de port ou d'URL si ce n'est pas un problème de pare-feu du côté du serveur.