This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/master by this push:
     new b98fcf2  CAMEL-14595: camel-mail - Allow to use headers for additional 
mail properties
b98fcf2 is described below

commit b98fcf25cbf46afa8e74eec47da08650fddc514d
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Mon Mar 16 11:39:51 2020 +0100

    CAMEL-14595: camel-mail - Allow to use headers for additional mail 
properties
---
 .../camel/component/mail/DefaultJavaMailSender.java   |  5 ++---
 .../apache/camel/component/mail/JavaMailSender.java   |  2 +-
 .../org/apache/camel/component/mail/MailProducer.java | 19 +++++++++++++------
 .../component/mail/MailCustomMailSenderTest.java      |  2 +-
 4 files changed, 17 insertions(+), 11 deletions(-)

diff --git 
a/components/camel-mail/src/main/java/org/apache/camel/component/mail/DefaultJavaMailSender.java
 
b/components/camel-mail/src/main/java/org/apache/camel/component/mail/DefaultJavaMailSender.java
index d6b2d06..fb05737 100644
--- 
a/components/camel-mail/src/main/java/org/apache/camel/component/mail/DefaultJavaMailSender.java
+++ 
b/components/camel-mail/src/main/java/org/apache/camel/component/mail/DefaultJavaMailSender.java
@@ -68,9 +68,8 @@ public class DefaultJavaMailSender implements JavaMailSender {
         this.javaMailProperties = javaMailProperties;
     }
 
-    @Override
-    public void addAdditionalJavaMailProperties(Map<String, Object> 
additional) {
-        getJavaMailProperties().putAll(additional);
+    public void addAdditionalJavaMailProperty(String key, String value) {
+        getJavaMailProperties().setProperty(key, value);
     }
 
     @Override
diff --git 
a/components/camel-mail/src/main/java/org/apache/camel/component/mail/JavaMailSender.java
 
b/components/camel-mail/src/main/java/org/apache/camel/component/mail/JavaMailSender.java
index ac6cab3..ea9bc84 100644
--- 
a/components/camel-mail/src/main/java/org/apache/camel/component/mail/JavaMailSender.java
+++ 
b/components/camel-mail/src/main/java/org/apache/camel/component/mail/JavaMailSender.java
@@ -41,7 +41,7 @@ public interface JavaMailSender {
 
     void setJavaMailProperties(Properties javaMailProperties);
 
-    void addAdditionalJavaMailProperties(Map<String, Object> additional);
+    void addAdditionalJavaMailProperty(String key, String value);
 
     void setHost(String host);
 
diff --git 
a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailProducer.java
 
b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailProducer.java
index 44771fb..2155ae5 100644
--- 
a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailProducer.java
+++ 
b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailProducer.java
@@ -36,15 +36,17 @@ public class MailProducer extends DefaultAsyncProducer {
 
     private static final Logger LOG = 
LoggerFactory.getLogger(MailProducer.class);
 
-    private final JavaMailSender sender;
+    private final JavaMailSender defaultSender;
 
     public MailProducer(MailEndpoint endpoint, JavaMailSender sender) {
         super(endpoint);
-        this.sender = sender;
+        this.defaultSender = sender;
     }
 
     @Override
     public boolean process(Exchange exchange, AsyncCallback callback) {
+        JavaMailSender mailSender = getSender(exchange);
+
         ClassLoader tccl = Thread.currentThread().getContextClassLoader();
         try {
             ClassLoader applicationClassLoader = 
getEndpoint().getCamelContext().getApplicationContextClassLoader();
@@ -60,13 +62,13 @@ public class MailProducer extends DefaultAsyncProducer {
                 mimeMessage = (MimeMessage) body;
             } else {
                 // Create a message with exchange data
-                mimeMessage = new 
MimeMessage(getSender(exchange).getSession());
+                mimeMessage = new MimeMessage(mailSender.getSession());
                 getEndpoint().getBinding().populateMailMessage(getEndpoint(), 
mimeMessage, exchange);
             }
             if (LOG.isDebugEnabled()) {
                 LOG.debug("Sending MimeMessage: {}", 
MailUtils.dumpMessage(mimeMessage));
             }
-            getSender(exchange).send(mimeMessage);
+            mailSender.send(mimeMessage);
             // set the message ID for further processing
             exchange.getIn().setHeader(MailConstants.MAIL_MESSAGE_ID, 
mimeMessage.getMessageID());
         } catch (MessagingException | IOException e) {
@@ -90,12 +92,17 @@ public class MailProducer extends DefaultAsyncProducer {
         if (additional.isEmpty()) {
             // no then use default sender
             LOG.trace("Using default JavaMailSender");
-            return sender;
+            return defaultSender;
         } else {
             // create new mail sender specially for this
             LOG.debug("Creating new JavaMailSender to include additional {} 
java mail properties", additional.size());
             JavaMailSender customSender = 
getEndpoint().getConfiguration().createJavaMailSender();
-            customSender.addAdditionalJavaMailProperties(additional);
+            additional.forEach((k, v) -> {
+                if (v != null) {
+                    // add with prefix so we dont loose that
+                    customSender.addAdditionalJavaMailProperty("mail.smtp." + 
k, v.toString());
+                }
+            });
             return customSender;
         }
     }
diff --git 
a/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailCustomMailSenderTest.java
 
b/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailCustomMailSenderTest.java
index 7f761ff..eed26e0 100644
--- 
a/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailCustomMailSenderTest.java
+++ 
b/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailCustomMailSenderTest.java
@@ -54,7 +54,7 @@ public class MailCustomMailSenderTest extends 
CamelTestSupport {
         }
 
         @Override
-        public void addAdditionalJavaMailProperties(Map<String, Object> 
additional) {
+        public void addAdditionalJavaMailProperty(String key, String value) {
         }
 
         @Override

Reply via email to