LINUX.ORG.RU

javamail pkcs7-mime DataHadler


0

1

Есть зашифрованный файл в формате DER. Надо его просто засунуть в тело письма, закодировав в base64

messageBodyPart = new MimeBodyPart();
    source = new FileDataSource(step4_path);
    //System.out.println(source.getContentType());

    messageBodyPart.setDataHandler(new DataHandler(source, "application/pkcs7-mime"));

    messageBodyPart.setHeader("Content-Type", "application/pkcs7-mime; smime-type=\"enveloped-data\"; name=\"smime.p7m\"");
    messageBodyPart.setHeader("Content-Transfer-Encoding", "base64");
    messageBodyPart.setFileName("smime.p7m");

    message.setContent(messageBodyPart.getContent(), messageBodyPart.getContentType());

ошибка:

Exception in thread "main" javax.activation.UnsupportedDataTypeException: no object DCH for MIME type application/pkcs7-mime; smime-type=enveloped-data;
  name=smime.p7m
  at javax.activation.ObjectDataContentHandler.writeTo(Unknown Source)
  at javax.activation.DataHandler.writeTo(Unknown Source)
  at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1476)
  at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1772)
  at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1748)
  at org.aaa.Main.main(Main.java:197)

Какой хэндлер ему подсунуть? Спасибо.



Последнее исправление: alabalaev (всего исправлений: 1)

взял javamail из дистрибутва Linux, где есть handler для octet-stream

добавил

 MailcapCommandMap mc = (MailcapCommandMap)CommandMap.getDefaultCommandMap(); mc.addMailcap("application/pkcs7-mime;; x-java-content-handler=gnu.mail.handler.ApplicationOctetStream"); CommandMap.setDefaultCommandMap(mc); 

solved

alabalaev
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.