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

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


The following commit(s) were added to refs/heads/main by this push:
     new fe3d038cd6a CAMEL-21593: camel-aws-ses - Add support for RawMessage as 
Camel message body for sending to aws (#16724)
fe3d038cd6a is described below

commit fe3d038cd6a91af3c57fdfed72adccaca8a13cf3
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Mon Jan 6 16:26:25 2025 +0100

    CAMEL-21593: camel-aws-ses - Add support for RawMessage as Camel message 
body for sending to aws (#16724)
---
 .../camel/component/aws2/ses/Ses2Producer.java     | 36 +++++++++++-----------
 1 file changed, 18 insertions(+), 18 deletions(-)

diff --git 
a/components/camel-aws/camel-aws2-ses/src/main/java/org/apache/camel/component/aws2/ses/Ses2Producer.java
 
b/components/camel-aws/camel-aws2-ses/src/main/java/org/apache/camel/component/aws2/ses/Ses2Producer.java
index 0fb3aa01196..86f6fc16fec 100644
--- 
a/components/camel-aws/camel-aws2-ses/src/main/java/org/apache/camel/component/aws2/ses/Ses2Producer.java
+++ 
b/components/camel-aws/camel-aws2-ses/src/main/java/org/apache/camel/component/aws2/ses/Ses2Producer.java
@@ -17,8 +17,6 @@
 package org.apache.camel.component.aws2.ses;
 
 import java.io.ByteArrayOutputStream;
-import java.io.OutputStream;
-import java.nio.ByteBuffer;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
@@ -39,6 +37,7 @@ import software.amazon.awssdk.core.SdkBytes;
 import software.amazon.awssdk.services.ses.model.Body;
 import software.amazon.awssdk.services.ses.model.Content;
 import software.amazon.awssdk.services.ses.model.Destination;
+import software.amazon.awssdk.services.ses.model.RawMessage;
 import software.amazon.awssdk.services.ses.model.SendEmailRequest;
 import software.amazon.awssdk.services.ses.model.SendEmailResponse;
 import software.amazon.awssdk.services.ses.model.SendRawEmailRequest;
@@ -62,17 +61,19 @@ public class Ses2Producer extends DefaultProducer {
 
     @Override
     public void process(Exchange exchange) throws Exception {
-        if (!(exchange.getIn().getBody() instanceof jakarta.mail.Message)) {
-            SendEmailRequest request = createMailRequest(exchange);
+        Object body = exchange.getIn().getBody();
+        boolean mail = body instanceof jakarta.mail.Message;
+        if (mail) {
+            SendRawEmailRequest request = createRawMailRequest(exchange);
             LOG.trace("Sending request [{}] from exchange [{}]...", request, 
exchange);
-            SendEmailResponse result = 
getEndpoint().getSESClient().sendEmail(request);
+            SendRawEmailResponse result = 
getEndpoint().getSESClient().sendRawEmail(request);
             LOG.trace("Received result [{}]", result);
             Message message = getMessageForResponse(exchange);
             message.setHeader(Ses2Constants.MESSAGE_ID, result.messageId());
         } else {
-            SendRawEmailRequest request = createRawMailRequest(exchange);
+            SendEmailRequest request = createMailRequest(exchange);
             LOG.trace("Sending request [{}] from exchange [{}]...", request, 
exchange);
-            SendRawEmailResponse result = 
getEndpoint().getSESClient().sendRawEmail(request);
+            SendEmailResponse result = 
getEndpoint().getSESClient().sendEmail(request);
             LOG.trace("Received result [{}]", result);
             Message message = getMessageForResponse(exchange);
             message.setHeader(Ses2Constants.MESSAGE_ID, result.messageId());
@@ -102,8 +103,13 @@ public class Ses2Producer extends DefaultProducer {
     private software.amazon.awssdk.services.ses.model.Message 
createMessage(Exchange exchange) {
         software.amazon.awssdk.services.ses.model.Message.Builder message
                 = software.amazon.awssdk.services.ses.model.Message.builder();
-        final boolean isHtmlEmail = 
exchange.getIn().getHeader(Ses2Constants.HTML_EMAIL, false, Boolean.class);
-        String content = exchange.getIn().getBody(String.class);
+        String content;
+        if (exchange.getIn().getBody() instanceof RawMessage raw) {
+            content = raw.data().toString();
+        } else {
+            content = exchange.getIn().getBody(String.class);
+        }
+        boolean isHtmlEmail = 
exchange.getIn().getHeader(Ses2Constants.HTML_EMAIL, false, Boolean.class);
         if (isHtmlEmail) {
             
message.body(Body.builder().html(Content.builder().data(content).build()).build());
         } else {
@@ -117,15 +123,9 @@ public class Ses2Producer extends DefaultProducer {
         software.amazon.awssdk.services.ses.model.RawMessage.Builder message
                 = 
software.amazon.awssdk.services.ses.model.RawMessage.builder();
         jakarta.mail.Message content = 
exchange.getIn().getBody(jakarta.mail.Message.class);
-        OutputStream byteOutput = new ByteArrayOutputStream();
-        try {
-            content.writeTo(byteOutput);
-        } catch (Exception e) {
-            LOG.error("Cannot write to byte Array");
-            throw e;
-        }
-        byte[] messageByteArray = ((ByteArrayOutputStream) 
byteOutput).toByteArray();
-        
message.data(SdkBytes.fromByteBuffer(ByteBuffer.wrap(messageByteArray)));
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        content.writeTo(bos);
+        message.data(SdkBytes.fromByteArrayUnsafe(bos.toByteArray()));
         return message.build();
     }
 

Reply via email to