diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mail/MailProperties.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mail/MailProperties.java index 5349a52a51..2d461c6b28 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mail/MailProperties.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mail/MailProperties.java @@ -67,6 +67,11 @@ public class MailProperties { */ private String jndiName; + /** + * Ping to mail server while initializing. + */ + private boolean testConnection; + public String getHost() { return this.host; } @@ -119,4 +124,11 @@ public class MailProperties { return this.jndiName; } + public boolean isTestConnection() { + return this.testConnection; + } + + public void setTestConnection(boolean testConnection) { + this.testConnection = testConnection; + } } diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mail/MailSenderAutoConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mail/MailSenderAutoConfiguration.java index 640a39635f..1d90961acd 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mail/MailSenderAutoConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mail/MailSenderAutoConfiguration.java @@ -20,6 +20,7 @@ import java.util.Map; import java.util.Properties; import javax.activation.MimeType; +import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.internet.MimeMessage; @@ -69,9 +70,21 @@ public class MailSenderAutoConfiguration { else { applyProperties(sender); } + validateConnection(sender); return sender; } + private void validateConnection(JavaMailSenderImpl sender) { + if (this.properties.isTestConnection()) { + try { + sender.testConnection(); + } catch (MessagingException ex) { + throw new IllegalStateException( + String.format("Unable to ping to %s", this.properties.getHost()), ex); + } + } + } + private void applyProperties(JavaMailSenderImpl sender) { sender.setHost(this.properties.getHost()); if (this.properties.getPort() != null) { diff --git a/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc b/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc index 235545b4fa..74cf441ab0 100644 --- a/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc +++ b/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc @@ -519,6 +519,7 @@ content into your application; rather pick only the properties that you need. spring.mail.default-encoding=UTF-8 # encoding to use for MimeMessages spring.mail.properties.*= # properties to set on the JavaMail session spring.mail.jndi-name= # JNDI location of a Mail Session + spring.mail.test-connection= # Enable test connection. Default: false # SPRING BATCH ({sc-spring-boot-autoconfigure}/batch/BatchProperties.{sc-ext}[BatchProperties]) spring.batch.job.names=job1,job2