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