2017-01-13 4 views
0

私は、改行でjavax.mail.Messageの内容を読みなければなりません。 私はこのアルゴリズムを使用する瞬間、私はstackoverflowでそれを見つけましたが、コンテンツを読み込んだ後に内容に新しい行がないので、文字列を読み込むときにScanner.nextLine()は1行だけ読み込みます。改行で電子メールから内容を読む

private String getTextFromMimeMultipart(
     MimeMultipart mimeMultipart) throws Exception{ 
    String result = ""; 
    int count = mimeMultipart.getCount(); 
    for (int i = 0; i < count; i++) { 
     BodyPart bodyPart = mimeMultipart.getBodyPart(i); 
     if (bodyPart.isMimeType("text/plain")) { 
      result = result + "\n" + bodyPart.getContent(); 
     } else if (bodyPart.isMimeType("text/html")) { 
      String html = (String) bodyPart.getContent(); 
      result = result + "\n" + org.jsoup.Jsoup.parse(html).text(); 
     } else if (bodyPart.getContent() instanceof MimeMultipart){ 
      result = result + getTextFromMimeMultipart((MimeMultipart)bodyPart.getContent()); 
     } 
    } 
    return result; 
} 
+0

内容の読んで何をしているのかはあまり明確ではありません。あなたがWindows上にいる場合は、\ r \ nの代わりに\ nを使用している可能性があります。しかしそれはちょうど推測です。あなたの質問を言い換えて、より多くの情報を提供してください。 – Tobias

+0

私は問題を解決しました。 Jsoup.parse()がすべての新しい行を削除するため、文字列に新しい行がありません。これは、 'String html =(String)bodyPart.getContent(); 文字列parsedHtml = Jsoup.parse(html.replaceAll( "(?i) * *"、 "br2n"))。 result = result + System.getProperty( "line.separator")+ parsedHtml.replaceAll( "br2n"、System.getProperty( "line.separator")); ' –

+0

あなた自身の質問への回答としてこれを追加してください。これは、他のユーザーが同様の問題を探しているのに役立ちます。 – Tobias

答えて

1

私は問題を解決しました。 Jsoup.parse()がすべての新しい行を削除するため、文字列に新しい行がありません。これは解決策です:

String html = (String) bodyPart.getContent(); 
String parsedHtml = Jsoup.parse(html.replaceAll("(?i)<br[^>]*>","br2n")).text(); 
result = result + System.getProperty("line.separator") + parsedHtml.replaceAll("br2n", System.getProperty("line.separator")); 
関連する問題