Attach a MimeMessage to another MimeMessage

430 Views Asked by At

I have a MimeMessage A and would like to add another MimeMessage B as an attachment.

My (not working) attempt:

MimeBodyPart mimeBodyPart = new MimeBodyPart();
mimeBodyPart.setContent(base64mimeMessage, "message/rfc822");
mimeBodyPart.setHeader("Content-Transfer-Encoding", "base64");
multipart.addBodyPart(mimeBodyPart);

Which causes an java.io.IOException: unsupported object at com.sun.mail.handlers.message_rfc822.writeTo later when i try to sign or encrypt the result.

2

There are 2 best solutions below

0
On

Maybe it is helpful for somebody else, so here is a working solution

MimeBodyPart mimeBodyPart = new MimeBodyPart();
DataSource dataSource = new ByteArrayDataSource(Base64.decode(itemAttachment.getMimeContent(), Base64.DEFAULT), "message/rfc822");
mimeBodyPart.setDataHandler(new DataHandler(dataSource));
multipart.addBodyPart(mimeBodyPart);
0
On
Session session = Session.getInstance(new Properties());
MimeMessage mimeMessageToAttach = new MimeMessage(session);

MimeBodyPart attachment = new MimeBodyPart();
String contentType = "message/rfc822; name=mymail.eml";
attachment.setContent(mimeMessageToAttach, contentType);

MimeMultipart multipart = new MimeMultipart();
multipart.addBodyPart(mimeBodyPart);