MimeMessage
バイト配列を持つ Tiff イメージの添付ファイルを作成しています。
ByteArrayOutputStream out = new ByteArrayOutputStream();
MimeBodyPart body = new MimeBodyPart();
body.setContent(tiffByteArray, "image/tiff");
body.setDisposition("attachment");
body.setFileName(filename);
MimeMultipart multipart = new MimeMultipart();
multipart.addBodyPart(body);
MimeMessage message = new MimeMessage(Session.getDefaultInstance(System.getProperties()));
message.setContent(multipart);
message.writeTo(out);
String mimeContent = out.toString();
これは正常に機能します。画像はメッセージ内で base64 文字列に変換されます。ただし、ある時点でシステム上の何かが発生し、このコードの一部が を使用し始めますcom.sun.xml.internal.messaging.saaj.soap.ImageDataContentHandler
。この特定の変換ではjava.awt.Image
、バイト配列ではなくオブジェクトが必要です (関連するソース)。次のエラーが表示されます。
画像をストリームにエンコードできません ImageDataContentHandler には Image オブジェクトが必要ですが、タイプ クラス [B] のオブジェクトが指定されました
に を設定でき、javax.activation.DataHandler
にを設定できることがわかりますが、javax.mail.internet.MimeMessage
何に設定すればよいかわかりません。DataHandler
javax.activation.DataContentHandlerFactory
MIME タイプに関係なく、バイト配列を base64 でエンコードされた文字列に強制的に変換する方法はありますか?