我必须从javax.mail.Message中读取内容,并带有换行符。
在使用此算法的那一刻,我在stackoverflow上找到了它,但是通过它读取内容后,内容没有换行,因此当我读取字符串时,Scanner.nextLine()只读取一行。

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;
}

最佳答案

好的,我已经解决了我的问题。字符串没有新行,因为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"));

10-04 10:41