diff --git a/spring-integration-mail/.springBeans b/spring-integration-mail/.springBeans
index 6f4c287497..a5e8c77289 100644
--- a/spring-integration-mail/.springBeans
+++ b/spring-integration-mail/.springBeans
@@ -7,6 +7,7 @@
+ src/test/java/org/springframework/integration/mail/config/MailOutboundWithJavamailProperties-context.xml
diff --git a/spring-integration-mail/src/main/java/org/springframework/integration/mail/config/MailOutboundChannelAdapterParser.java b/spring-integration-mail/src/main/java/org/springframework/integration/mail/config/MailOutboundChannelAdapterParser.java
index bbde0ddc9c..a6892af3eb 100644
--- a/spring-integration-mail/src/main/java/org/springframework/integration/mail/config/MailOutboundChannelAdapterParser.java
+++ b/spring-integration-mail/src/main/java/org/springframework/integration/mail/config/MailOutboundChannelAdapterParser.java
@@ -64,8 +64,9 @@ public class MailOutboundChannelAdapterParser extends AbstractOutboundChannelAda
if (StringUtils.hasText(port)) {
mailSenderBuilder.addPropertyValue("port", port);
}
- IntegrationNamespaceUtils.setValueIfAttributeDefined(
+ IntegrationNamespaceUtils.setReferenceIfAttributeDefined(
mailSenderBuilder, element, "java-mail-properties", "javaMailProperties");
+
String mailSenderBeanName = BeanDefinitionReaderUtils.registerWithGeneratedName(
mailSenderBuilder.getBeanDefinition(), parserContext.getRegistry());
builder.addConstructorArgReference(mailSenderBeanName);
diff --git a/spring-integration-mail/src/test/java/org/springframework/integration/mail/config/MailOutboundChannelAdapterParserTests.java b/spring-integration-mail/src/test/java/org/springframework/integration/mail/config/MailOutboundChannelAdapterParserTests.java
index 69b07d38b1..9c9ffef1e3 100644
--- a/spring-integration-mail/src/test/java/org/springframework/integration/mail/config/MailOutboundChannelAdapterParserTests.java
+++ b/spring-integration-mail/src/test/java/org/springframework/integration/mail/config/MailOutboundChannelAdapterParserTests.java
@@ -54,5 +54,17 @@ public class MailOutboundChannelAdapterParserTests {
MailSender mailSender = (MailSender) fieldAccessor.getPropertyValue("mailSender");
assertNotNull(mailSender);
}
+
+ @Test
+ public void adapterWithJavaMailProperties() {
+ ApplicationContext context = new ClassPathXmlApplicationContext(
+ "MailOutboundWithJavamailProperties-context.xml", this.getClass());
+ Object adapter = context.getBean("adapterWithHostProperty.adapter");
+ MailSendingMessageHandler handler = (MailSendingMessageHandler)
+ new DirectFieldAccessor(adapter).getPropertyValue("handler");
+ DirectFieldAccessor fieldAccessor = new DirectFieldAccessor(handler);
+ MailSender mailSender = (MailSender) fieldAccessor.getPropertyValue("mailSender");
+ assertNotNull(mailSender);
+ }
}
diff --git a/spring-integration-mail/src/test/java/org/springframework/integration/mail/config/MailOutboundWithJavamailProperties-context.xml b/spring-integration-mail/src/test/java/org/springframework/integration/mail/config/MailOutboundWithJavamailProperties-context.xml
new file mode 100644
index 0000000000..ce667e7218
--- /dev/null
+++ b/spring-integration-mail/src/test/java/org/springframework/integration/mail/config/MailOutboundWithJavamailProperties-context.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+ javax.net.ssl.SSLSocketFactory
+ false
+ imaps
+ smtps
+ true
+ true
+ false
+
+