Question

I need to specify a particular headers to a MimeMessage.

MimeMessage mMessage = new MimeMessage(session);
...
mMessage.setRecipients(Message.RecipientType.TO, tosAddr);
mMessage.setHeader("MIME-Version", "1.0");
mMessage.setHeader("Content-Type", "application/x-pkcs7-mime; smime-type=signed-data; name=\"smime.p7m\"");
mMessage.setHeader("Content-Transfer-Encoding", "base64");
mMessage.setHeader("Content-Disposition", "attachment; filename=\"smime.p7m\"");

mMessage.setText(new String(base64Data));
mMessage.saveChanges();

However this mimemessage is created with this headers:

Content-Type: text/plain; charset=us-ascii; name=smime.p7m
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment; filename="smime.p7m"

Do you know why it changes its header?

Was it helpful?

Solution

Swap the order of setText and setHeader:

mMessage.setText(new String(base64Data));
mMessage.setHeader("MIME-Version", "1.0");
mMessage.setHeader("Content-Type", "application/x-pkcs7-mime; smime-type=signed-data; name=\"smime.p7m\"");
mMessage.setHeader("Content-Transfer-Encoding", "base64");
mMessage.setHeader("Content-Disposition", "attachment; filename=\"smime.p7m\"");
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top