我必须从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"));