Как получить различный тип содержимого почты, как в Java? - PullRequest
0 голосов
/ 02 июля 2018

Я работаю над приложением, в котором мне нужно получить содержимое почтового тела, как в Java. Когда текст простой, у меня нет проблем, чтобы получить в виде строки. Но когда содержимое почты содержит жирные буквы, такие как:

Тема : Fwd: Fwd: Re: Возможность работать с блочной цепью / приложением криптовалюты !!

Этот текст печатается как:

% 0D% 0ASubject% 3A Re% 3A Возможность работать с цепочкой блоков% 2F криптовалюты% 0D% 0AApplication% 21% 21%

У меня нет причин для этого.

Вот мой простой код для получения контента из почты:

private static String getTextFromMail(Message message) throws MessagingException, IOException {
        String result = "";
        if (message.isMimeType("text/plain")) {
            ///result = message.getContent().toString();
            result = (String) message.getContent();
        } 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 the body part is a text file, don't consider it as part of mail content(body) to print in the comment
            if (!Part.ATTACHMENT.equalsIgnoreCase(bodyPart.getDisposition())) {
            if (bodyPart.isMimeType("text/plain")) {
                result = result + "\n" + bodyPart.getContent().toString();
                break; // without break same text appears twice in my tests
            } else if (bodyPart.isMimeType("text/html")) {
                String html = (String) bodyPart.getContent();
                /// result = result + "\n" + org.Jsoup.parse(html).text();
            } else if (bodyPart.getContent() instanceof MimeMultipart) {
                result = result + getTextFromMimeMultipart((MimeMultipart) bodyPart.getContent());
            }
        }
    }
        return result;
    }

Любая помощь о том, как я могу исправить то же самое?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...