我正在尝试使用Java邮件提取电子邮件的正文。当我尝试使用以下代码提取电子邮件的正文时,电子邮件会通过附加新的行字符将每行包装为76个字符。 我想要原始电子邮件格式而没有文字换行。这是我用来提取电子邮件文本内容的代码。
private static String getTextFromMessage(Message message) throws MessagingException, IOException {
String result = "";
if (message.isMimeType("text/plain")) {
result = message.getContent().toString();
} else if (message.isMimeType("multipart/*")) {
MimeMultipart mimeMultipart = (MimeMultipart) message.getContent();
result = getTextFromMimeMultipart(mimeMultipart);
}
return result;
}
private static String getTextFromMimeMultipart(
MimeMultipart mimeMultipart) throws MessagingException, IOException{
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 + bodyPart.getContent();
break; // without break same text appears twice in my tests
} else if (bodyPart.isMimeType("text/html")) {
String html = (String) bodyPart.getContent();
result = result + org.jsoup.Jsoup.parse(html).text();
} else if (bodyPart.getContent() instanceof MimeMultipart){
result = result + getTextFromMimeMultipart((MimeMultipart)bodyPart.getContent());
}
}
return result;
}
有人可以提供一种解决方案,使我能够获得原始的电子邮件行长,而无需进行76个字符包装吗?
答案 0 :(得分:0)
您可以尝试使用javax.mail.Part::getInputStream阅读内容,而不是获取内容。否则,您可以使用javax.mail.internet.MimeUtility::unfold删除返回的内容上的换行符。
答案 1 :(得分:0)
JavaMail没有插入换行符。换行在那里 在原始邮件中,并由发送邮件者插入。 发送邮件的人可能已插入行有很多原因 中断,但没有看到MIME消息内容的示例 您正在阅读,很难知道您遇到哪种情况。