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();
ただし、この mimemessage は次のヘッダーで作成されます。
Content-Type: text/plain; charset=us-ascii; name=smime.p7m
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment; filename="smime.p7m"
ヘッダーが変更される理由を知っていますか?