バイト配列のTIFF画像用のMimeMessage
への添付ファイルを作成しています。MimeMessage添付ファイルに使用するDataContentHandlerは何ですか?
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
を使用し始めます。この特定の変換では、バイト配列(relevant source)ではなく、java.awt.Image
オブジェクトが必要です。私はあなたがjavax.mail.internet.MimeMessage
にjavax.activation.DataHandler
を設定することができますし、DataHandler
にあなたがjavax.activation.DataContentHandlerFactory
を設定できることがわかります
Unable to encode the image to a stream ImageDataContentHandler requires Image object, was given object of type class [B
が、私はそれを設定することはよく分からない:私は次のエラーを取得します。
MIME配列に関係なく、バイト配列をbase64でエンコードされた文字列に変換する方法はありますか?
が、私は答えを見つけたかもしれないと思うhttps://books.google.com/books?id=9NaYku1OY4cC&pg=PA140&lpg=PA140&dq=DataContentHandlerFactory&source=bl&ots=wsqCxfRckN&sig=Q25vgayKlJhhNhRPEVYA07vHPBc&hl=en&sa=X&ved=0ahUKEwjOjsiJ447OAhVFw4MKHWpVDWUQ6AEITTAI#v= onepage&q = DataContentHandlerFactory&f = false – JustinKSU