2016-11-10 7 views
-1

最近、javamailを使用して電子メールアカウントからメールを取得しています&最近、中国語、日本語の文字が送られてきました。Javamailを使用して外国人のメールを解析しようとしたときに奇妙な出力を取得する

限定クリエイティブツールのコレクションを含む高速写真編集ソフトウェア。 

そして、それはおそらく、このように出力さになるだろう:

<div>=1B$B$"=1B(B =1B$B$$=1B(B =1B$B$&=1B(B =1B$B$(=1B(B =1B$B$*=1B(B =1B$B= 
$+=1B(B =1B$B$-=1B(B =1B$B$/=1B(B =1B$B$1=1B(B =1B$B$3=1B(B =1B$B$5=1B(B = 
=1B$B$7=1B(B =1B$B$9=1B(B =1B$B$;=1B(B =1B$B$=3D=1B(B =1B$B$,=1B(B =1B$B$.= 
=1B(B =1B$B$0=1B(B =1B$B$2=1B(B =1B$B$4=1B(B =1B$B$Q=1B(B =1B$B$T=1B(B =1B$= 
B$W=1B(B =1B$B$Z=1B(B =1B$B$]=1B(B</div> 

そしてcontent-typeは通常text/html; charset=UTF-8ある

例えば、ここでいくつかの日本のコンテンツがあります。

私たちはwriteToメソッドを使用してすべてのヘッダーとコンテンツを取得しています。

私は、次の操作を実行しようとしたが、それはうまくいきませんでした:

ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
m.writeTo(baos); 
pm.setUnProcessedMessage(baos.toString("UTF-8")); //Here I am explicitly stating the encoding 

また、私たちはJavaMailの(1.5.0)の古いバージョンを使用しているため、問題があるかもしれないと信じています。

外国の文字を扱うにはここで何ができますか?

答えて

1

writeToメソッドを使用すると、MIMEエンコードされたメッセージの内容が得られます。 の内容がにデコードされているように思えます。そのためには、getContentメソッドまたはgetInputStreamメソッドを使用する必要があります。 getContentメソッドは、直接使用できるUnicode文字列を返します。 getInputStreamメソッドは、charsetパラメータで指定された文字エンコーディングを持つバイト文字列を返します。 Unicode文字を取得するには、Readerでそれをラップする必要があります。

メッセージコンテンツとともに表示するなどのヘッダーも必要な場合は、getSubject、getRecipientsなどのメソッドを使用する必要があります。これにより、デコードされたコンテンツが返されます。 getHeaderメソッドを使用して他のヘッダーを取得できますが、MimeUtilityメソッドを使用してコンテンツを自分でデコードする必要があります。

関連する問題