Как извлечь тело электронной почты Java без автоматического переноса каждой строки до 76 символов - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь извлечь тело письма, используя почту Java.Когда я пытаюсь извлечь тело письма, используя приведенный ниже код, оно переносит каждую строку до 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 символов?

Ответы [ 2 ]

0 голосов
/ 08 мая 2019

JavaMail не вставляет разрывы строк. Есть разрывы строк в оригинальном сообщении и были вставлены отправителем. Есть много причин, по которым отправитель мог вставить строку ломается, но не видя примера содержания сообщения MIME что вы читаете, трудно понять, в каком случае вы работаете.

0 голосов
/ 08 мая 2019

Вместо того, чтобы получать контент, вы можете попробовать прочитать контент, используя javax.mail.Part :: getInputStream . В противном случае вы можете использовать javax.mail.internet.MimeUtility :: unfold для удаления разрывов строк в возвращаемом содержимом.

...