diff --git a/components/camel-aws/camel-aws2-ses/pom.xml b/components/camel-aws/camel-aws2-ses/pom.xml
index 6175d403bbf52..44801fb2ac59e 100644
--- a/components/camel-aws/camel-aws2-ses/pom.xml
+++ b/components/camel-aws/camel-aws2-ses/pom.xml
@@ -80,5 +80,10 @@
camel-test-spring-junit5
test
+
+ org.assertj
+ assertj-core
+ test
+
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 6feec964451bf..f3c4a893a6159 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
@@ -101,7 +101,8 @@ private software.amazon.awssdk.services.ses.model.Message createMessage(Exchange
= software.amazon.awssdk.services.ses.model.Message.builder();
String content;
if (exchange.getIn().getBody() instanceof RawMessage raw) {
- content = raw.data().toString();
+ // SdkBytes.toString() is a debug descriptor (SdkBytes(bytes=0x...)), not the payload
+ content = raw.data().asUtf8String();
} else {
content = exchange.getIn().getBody(String.class);
}
diff --git a/components/camel-aws/camel-aws2-ses/src/test/java/org/apache/camel/component/aws2/ses/SesComponentTest.java b/components/camel-aws/camel-aws2-ses/src/test/java/org/apache/camel/component/aws2/ses/SesComponentTest.java
index 936963872e9f5..da952d47b368d 100644
--- a/components/camel-aws/camel-aws2-ses/src/test/java/org/apache/camel/component/aws2/ses/SesComponentTest.java
+++ b/components/camel-aws/camel-aws2-ses/src/test/java/org/apache/camel/component/aws2/ses/SesComponentTest.java
@@ -26,9 +26,12 @@
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.test.junit5.CamelTestSupport;
import org.junit.jupiter.api.Test;
+import software.amazon.awssdk.core.SdkBytes;
import software.amazon.awssdk.services.ses.model.MessageTag;
+import software.amazon.awssdk.services.ses.model.RawMessage;
import software.amazon.awssdk.services.ses.model.SendEmailRequest;
+import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.*;
public class SesComponentTest extends CamelTestSupport {
@@ -36,6 +39,17 @@ public class SesComponentTest extends CamelTestSupport {
@BindToRegistry("amazonSESClient")
private AmazonSESClientMock sesClient = new AmazonSESClientMock();
+ @Test
+ void rawMessageBodyIsSentAsItsContentNotTheSdkBytesDescriptor() {
+ String mime = "From: from@example.com\r\nSubject: Subject\r\n\r\nThis is my message text.";
+ template.send("direct:start", exchange -> exchange.getIn().setBody(
+ RawMessage.builder().data(SdkBytes.fromUtf8String(mime)).build()));
+
+ // SdkBytes.toString() would yield "SdkBytes(bytes=0x...)" rather than the message content
+ String sent = sesClient.getSendEmailRequest().message().body().text().data();
+ assertThat(sent).isEqualTo(mime);
+ }
+
@Test
public void sendInOnlyMessageUsingUrlOptions() {
Exchange exchange = template.send("direct:start", new Processor() {