1

com.sun.mail.util.BASE64DecoderStream というメッセージが表示されたら、javamail を使用してメッセージを取得します。

私が持っているメッセージのソースで、それがマルチパートメッセージの一部であることを知っています

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()); 

                    }

そして、そのコードは奇妙な文字列を返します。例えば: Ř˙á?Exif??II*????????????˙ě?Ducky???????˙á)

4

3 に答える 3

0

Sun の base 64 エンコーダーはオプションのパッケージに含まれており、警告なしにいつでも移動または名前変更できます。また、代替の Java ランタイムでは欠落している可能性があり、これらのパッケージへのアクセスも無効になっている可能性があります。それに頼らないほうがずっといいです。

代わりにApache CommonsのBase64を使用して、同じことを行う必要があります。ソースコードを再構築して修正できることを願っています。

于 2013-01-15T11:49:59.377 に答える
0

画像部分の内容を読んだとき、何を期待していますか? 画像はエンコードされた形式でメッセージに保存されますが、JavaMail はバイトを返す前にデータをデコードしています。バイトをファイルに保存すると、多くの画像表示/編集アプリケーションで画像を表示できます。Java プログラムでそれらを表示したい場合は、java.awt.image パッケージの API などを使用して、バイトを適切な Java Image オブジェクトに変換する必要があります。

于 2013-01-15T18:31:36.527 に答える