2012-05-02 8 views
2

javamail apiを使用して受信トレイフォルダから未読メッセージを取得していますが、Message.getContentType()と呼ぶと奇妙なコンテンツタイプ'multipart/alternative'が発生します。また
I(Objectからの)メッセージのダウンキャストのコンテンツクラスMultipartに私は例外

Exception in thread "main" java.lang.classCastException: com.sun.mail.imap.IMAPInputStream cannot be cast to javax.mail.Multipart at............「multipart/alternative」のコンテンツタイプを解析する

を取得するが、私はちょうど電子メールの内容を取得し、DBに格納したいです。

 subject = messages[j].getSubject();         
     System.out.println(messages[j].getContentType()); 
     if(messages[j].getContent() instanceof Multipart) 
     {         
      Multipart mime = (Multipart) messages[j].getContent(); 

      for (int i = 0; i < mime.getCount(); i++) 
      { 
       BodyPart part = mime.getBodyPart(i); 
       content += part.getContent().toString(); 
      } 
     } 

ありがとうございます。

+0

「添付ファイル付きJavaメール:javax.mail.Multipart」の複製可能(http://stackoverflow.com/questions/4594206/java-mail-with-attachment-classcastexception-on-javax-mail-multipart) ) – artbristol

+0

私はちょうど私が関連している答えを投稿しました - [ここ](http://stackoverflow.com/a/15729766/1102014)。 – Stan

答えて

0

hereと同じ問題が発生している可能性があります。

multipart/alternativeは、hereと記載されているように完全に正常な型です。

0

マルチプル/代替は奇妙ではありません。実際、それは非常に一般的です。通常、電子メールクライアントは、同じメッセージの2つのバージョンを作成するために使用されます.1つはプレーンテキストで、もう1つはHTMLです。まず、電子メールクライアントは、それがヘッダセクションにこれらのヘッダを見つけることによって行うことができ、メッセージはマルチパート/代替であることを検出する必要があります。

MIME-Version: 1.0 
Content-Type: multipart/alternative; boundary=some-boundary 

第二に、それは彼らのヘッダを調べて、代わりの体の部分のそれぞれを解析する必要がありますどの1つ(または1つ)を処理したいのかを確認してから実行します。

--some-boundary 
Content-Type: text/plain 

...The plain text version of the email goes here... 

--some-boundary 
Content-Type: text/html 

<html>...The html version of the content goes here...</html> 

--some-boundary-- 
0

Android JavaMailを使用してメッセージの添付ファイルを読み取っているうちに、同様の問題が発生しました。次のコード行を追加してこのエラーを修正しました。 MailCapに問題があります.javamailはmultipart/mixed部分のハンドラを見つけることができないため、このビットを追加する必要があります。これは私の問題を解決しました。誰かを助けてくれることを願っています。

MailcapCommandMap mc = (MailcapCommandMap) CommandMap.getDefaultCommandMap(); 
mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html"); 
mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml"); 
mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain"); 
mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed"); 
mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822"); 
CommandMap.setDefaultCommandMap(mc); 

乾杯!

関連する問題