2016-07-25 1 views
1

バイト配列の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.MimeMessagejavax.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でエンコードされた文字列に変換する方法はありますか?

+0

が、私は答えを見つけたかもしれないと思う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

答えて

0

javax.mailは、明示的に使用できるバイトの実装をDataSourceに提供します。

ByteArrayDataSource dataSource = new ByteArrayDataSource(tiffByteArray, "image/tiff"); 
DataHandler byteDataHandler = new DataHandler(dataSource); 
body.setDataHandler(byteDataHandler); 
body.setDisposition("attachment"); 
body.setFileName(filename); 
関連する問題