Java メール API と IAIK を使用して MIME メッセージを圧縮しようとしています。私は次のコードを書きました:
MimeBodyPart wrappedMessage = new MimeBodyPart(new InternetHeaders(), content);
CompressedContent compressed = new CompressedContent();
compressed.setDataHandler(wrappedMessage.getDataHandler());
compressed.setCompressionAlgorithm((AlgorithmID) CMSAlgorithmID.zlib_compress.clone());
String contentType = compressed.getContentType();
compressed.setHeaders(wrappedMessage);
wrappedMessage.setContent(compressed, contentType);
setLocalCommandMap(wrappedMessage.getDataHandler()); //I'm setting IAIK command map
ByteArrayOutputStream baos = new ByteArrayOutputStream();
wrappedMessage.writeTo(baos);
byte[] ret = baos.toByteArray();
上記のコードは Java メール API 1.5.2 では問題なく動作しますが、Java メール API 1.4.5 では次の例外が発生して失敗します。
java.io.IOException: javax.mail.MessagingException: javax.mail.MessagingException: No MimeMessage content
at iaik.smime.encrypted_content.writeTo(Unknown Source)
at javax.activation.ObjectDataContentHandler.writeTo(Unknown Source)
at javax.activation.DataHandler.writeTo(Unknown Source)
at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1485)
at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:865)
at CompressionTest.main(CompressionTest.java:34)
私の iaik cms のバージョンは 4.1 です。Java mail api 1.4.5 と互換性を持たせるためにコードを変更する必要があることをご存知ですか?
ありがとう