java - 通过保持文本位置在 Java 中阅读电子邮件

标签 java jakarta-mail

我正在尝试使用 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;
}

例如邮件内容是这样的:
image .

我需要输出为,

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/

相关文章:

java - Intellij无法配置和查看文件

java - 未找到包含字段 id 的所需 View ,但 id 存在

javax.mail.MessagingException : Could not connect to SMTP host: smtp. gmail.com,端口:587

tomcat - 如何使用无效的 ssl 证书通过 exchange 2007 SMTP 中继从 tomcat web 应用程序发送电子邮件?

java - 从数组中赋值时出现 Char 数组编译时错误

java - 按下一个键后, View 下降,仅在 S3

java - 如何禁用特定 Activity 的后退按钮

java一次只运行一个实例

jakarta-mail - 无法使用 javamail 和 jdk 12 发送电子邮件

java - 在公共(public)电子邮件中添加附件作为流