我正在尝试使用Java邮件提取电子邮件的正文。当我尝试使用以下代码提取电子邮件的主体时,通过附加新的Line Char,该电子邮件将每一行将每行包裹为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个字符包装的情况下获得原始的电子邮件行长度?
而不是获取内容,您可以尝试使用javax.mail.part :: getInputStream读取内容。否则,您可以使用javax.mail.internet.mimeutility :: Frololl以删除返回的内容上的线路断裂。
javamail不会插入线路断裂。线路休息在那里在原始消息中,由发送邮件插入。发送邮件器可能插入线的原因有很多断裂,但没有看到Mime消息内容的示例您正在阅读,很难知道您正在使用哪种情况。