通过保持文本位置在Java中读取电子邮件
我正在尝试使用Java阅读电子邮件。我正确地收到了收件箱里的邮件。 但问题是文本正文是逐行显示的。我需要的正文文本,因为它是在邮件中显示,即输出文本应在相同的顺序(重新措辞的建议:“表格对齐”),如邮件中所示 这是我用来从消息对象获取正文的代码通过保持文本位置在Java中读取电子邮件,java,jakarta-mail,Java,Jakarta Mail,我正在尝试使用Java阅读电子邮件。我正确地收到了收件箱里的邮件。 但问题是文本正文是逐行显示的。我需要的正文文本,因为它是在邮件中显示,即输出文本应在相同的顺序(重新措辞的建议:“表格对齐”),如邮件中所示 这是我用来从消息对象获取正文的代码 private static String getTextFromMessage(Message message) throws MessagingException, IOException { String result = "";
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 + "\n" + bodyPart.getContent();
break;
}
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;
}
如邮件所示
但是我得到了输出
Beschreibung
Stückpreis
Anzahl
Betrag
22545047
106,56 EUR
1
€106,56 EUR
谁能帮我解决这个问题。
提前谢谢
顺便说一下,这些奇怪的词是德语,意思是“描述”、“每件的价格”、“件数”、“这类商品的总价”。也就是说,它们形成一个账单,与问题无关。您似乎不喜欢在某些“呈现”方法中显式插入的换行符 要删除它们,请删除所有出现的
+ "\n"
在你的代码中
然后考虑在输出结束时添加单个<代码> +“\n”<代码>。< /P>
如果输出的文本是html->纯文本转换的结果,则会丢失由html呈现创建的表格对齐。没有“十格”。为了将对齐信息转换为ascii art(空格对齐列),您必须对html标记进行深入分析,并导出适当数量的空格以插入。请显示您的输出示例和不同的所需输出。@Yunnosch:Question updated。请检查我期望的输出和我附加的图像“应处于相同的顺序”我看不到顺序上的差异。如果替换
result=result+“\n”+bodyPart.getContent()
byresult=result+bodyPart.getContent()代码>是否可以编辑问题以显示所有换行符的确切位置?您选择的格式将隐藏它们。粗体可能不是一个有用的格式选择。将格式设置为代码可能更好。为此,请确保输出的所有行都以四个空格/spaces/Leerzeichen/“”开头。
+ "\n"