2013-01-15 62 views
0

我使用JavaMail得到消息,当时我得到的消息,我有: com.sun.mail.util.BASE64DecoderStream,JAVAMAIL的base64解码

我知道这是多消息的一部分,在消息源我有

Content-Type: image/png; name=index_01.png 

内容传输编码:的base64

如何编码这个消息?

编辑: 我有代码:

else if (mbp.getContent() instanceof BASE64DecoderStream){ 
         InputStream is = null; 
         ByteArrayOutputStream os = null; 

          is = mbp.getInputStream(); 
          os = new ByteArrayOutputStream(512); 
          int c = 0; 
          while ((c = is.read()) != -1) { 
           os.write(c); 
          } 



          System.out.println(os.toString()); 

        } 

这代码返回奇怪的字符串,例如: RA的EXIF II * ??????????? ?˙ě?Ducky ??????)

回答

0

Sun的base 64编码器位于可选软件包中,可以随时在没有警告的情况下移动或重命名,也可能在其他Java运行时中丢失,也可能禁用访问这些软件包。最好不要依赖它。

我会说,使用Base45Apache Commons而不是,应该这样做。希望你可以重建和修复源代码。

0

你是什么期待当你读取图像部分的内容?图像以编码格式存储在消息中,但是在将字节返回给您之前,JavaMail正在解码数据。如果将字节存储在文件中,则可以使用许多图像查看/编辑应用程序显示图像。如果要用Java程序显示它们,则需要使用java.awt.image包中的(例如)API将字节转换为适当的Java Image对象。

0

com.sun.mail.util.BASE64DecoderStream是平台相关的。你不能依赖那种总是处理base64解码的类。

相反了JavaMail API的支持已经为你解码:

// part is instanceof javax.mail.Part 
ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
part.getDataHandler().writeTo(bos); 

String decodedContent = bos.toString()