我正在尝试使用 Java 阅读电子邮件。我正确收到了收件箱邮件。 但问题是文本正文是逐行显示的。我需要邮件中显示的正文,即输出文本应与邮件中显示的顺序相同(改写建议:“表格对齐”)。
这是我用来从 Message 对象获取正文的代码,
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
如邮件中所示。
但是我得到了输出,
Beschreibung
Stückpreis
Anzahl
Betrag
22545047
106,56 EUR
1
€106,56 EUR
谁能帮我解决这个问题。 提前致谢
顺便说一下,“描述”、“每件价格”、“件数”、“这种商品的总价”这些奇怪的词是德语。 IE。它们形成一个法案,与问题无关。
最佳答案
您似乎不喜欢在某些“呈现”方法中明确插入的换行符。
为了摆脱它们,删除所有出现的
+ "\n"
在您的代码中。
然后考虑在输出末尾添加一个+ "\n"
。
如果您输出的文本是 html-> 纯文本转换的结果,您将失去由 html 渲染创建的表格对齐方式。没有“十个空格”。为了将对齐信息转换为 ascii-art(用于对齐列的空格),您必须对 html 标记进行一些深入分析并得出适当数量的空格以插入。
关于java - 通过保持文本位置在 Java 中阅读电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51587597/