Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@
import org.springframework.mail.javamail.ConfigurableMimeFileTypeMap;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.mail.javamail.MimeMessagePreparator;
import org.springframework.util.Assert;
import org.springframework.util.ClassUtils;
import software.amazon.awssdk.core.SdkBytes;
Expand Down Expand Up @@ -204,12 +203,6 @@ public MimeMessage createMimeMessage(InputStream contentStream) throws MailExcep
}
}

@Override
public void send(MimeMessage mimeMessage) throws MailException {
Assert.notNull(mimeMessage, "mimeMessage are required");
this.send(new MimeMessage[] { mimeMessage });
}

@SuppressWarnings("OverloadedVarargsMethod")
@Override
public void send(MimeMessage... mimeMessages) throws MailException {
Expand Down Expand Up @@ -241,28 +234,6 @@ public void send(MimeMessage... mimeMessages) throws MailException {
}
}

@Override
public void send(MimeMessagePreparator mimeMessagePreparator) throws MailException {
Assert.notNull(mimeMessagePreparator, "mimeMessagePreparator are required");
send(new MimeMessagePreparator[] { mimeMessagePreparator });
}

@SuppressWarnings("OverloadedVarargsMethod")
@Override
public void send(MimeMessagePreparator... mimeMessagePreparators) throws MailException {
Assert.notNull(mimeMessagePreparators, "mimeMessagePreparator are required");
MimeMessage mimeMessage = createMimeMessage();
for (MimeMessagePreparator mimeMessagePreparator : mimeMessagePreparators) {
try {
mimeMessagePreparator.prepare(mimeMessage);
}
catch (Exception e) {
throw new MailPreparationException(e);
}
}
send(mimeMessage);
}

private RawMessage createRawMessage(MimeMessage mimeMessage) {
ByteArrayOutputStream out;
try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import java.util.Objects;
import java.util.Properties;
import org.junit.jupiter.api.Test;
Expand Down Expand Up @@ -223,8 +224,7 @@ void testSendMailWithMimeMessagePreparator() throws Exception {

mailSender.send(preparator);

MimeMessage mimeMessage = new MimeMessage(Session.getInstance(new Properties()),
new ByteArrayInputStream(request.getValue().rawMessage().data().asByteArray()));
MimeMessage mimeMessage = toMimeMessage(request.getValue());
assertThat(mimeMessage.getRecipients(Message.RecipientType.TO)[0].toString()).isEqualTo("[email protected]");
assertThat(mimeMessage.getSubject()).isEqualTo("subject");
assertThat(mimeMessage.getContent()).isEqualTo("body");
Expand All @@ -241,16 +241,19 @@ void testSendMailWithMultipleMimeMessagePreparators() throws Exception {
preparators[0] = mimeMessage -> {
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage);
mimeMessageHelper.setTo("[email protected]");
mimeMessageHelper.setText("body1");
};

preparators[1] = mimeMessage -> {
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage);
mimeMessageHelper.setSubject("subject");
mimeMessageHelper.setText("body2");
};

preparators[2] = mimeMessage -> {
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage);
mimeMessageHelper.setText("body");
mimeMessageHelper.setPriority(1);
mimeMessageHelper.setText("body3");
};

ArgumentCaptor<SendRawEmailRequest> request = ArgumentCaptor.forClass(SendRawEmailRequest.class);
Expand All @@ -259,12 +262,19 @@ void testSendMailWithMultipleMimeMessagePreparators() throws Exception {

mailSender.send(preparators);

MimeMessage mimeMessage = new MimeMessage(Session.getInstance(new Properties()),
new ByteArrayInputStream(request.getValue().rawMessage().data().asByteArray()));
assertThat(mimeMessage.getRecipients(Message.RecipientType.TO)[0].toString()).isEqualTo("[email protected]");
assertThat(mimeMessage.getSubject()).isEqualTo("subject");
assertThat(mimeMessage.getContent()).isEqualTo("body");
List<MimeMessage> messages = request.getAllValues()
.stream()
.map(this::toMimeMessage)
.toList();

assertThat(messages.get(0).getRecipients(Message.RecipientType.TO)[0].toString()).isEqualTo("[email protected]");
assertThat(messages.get(0).getContent()).isEqualTo("body1");

assertThat(messages.get(1).getSubject()).isEqualTo("subject");
assertThat(messages.get(1).getContent()).isEqualTo("body2");

assertThat(messages.get(2).getContent()).isEqualTo("body3");
assertThat(messages.get(2).getHeader("X-Priority", ":")).isEqualTo("1");
}

@Test
Expand Down Expand Up @@ -367,4 +377,13 @@ private byte[] getMimeMessageAsByteArray(MimeMessage mimeMessage) throws IOExcep
return os.toByteArray();
}

private MimeMessage toMimeMessage(SendRawEmailRequest request) {
try {
return new MimeMessage(Session.getInstance(new Properties()),
new ByteArrayInputStream(request.rawMessage().data().asByteArray()));
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}

}