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 <[email protected]>
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();
}