Получение html-содержимого сообщения Gmail дважды при использовании Java IMAP

1

Как следует из названия, я пытаюсь импортировать электронные письма из учетной записи gmail, и он работает довольно хорошо, но у меня, похоже, есть проблема в моем коде, где содержимое сообщения появляется дважды в моем выпуске.

здесь мой код:

private String processMessage(Message m) throws IOException, MessagingException {
        String message = "";
        StringBuilder sb = new StringBuilder();

        Object o = m.getContent();

        if (o instanceof Multipart) {
            Multipart mm = (Multipart) m.getContent();
            for (int i = 0; i < mm.getCount(); i++) {

                BodyPart bp = mm.getBodyPart(i);
                Object bpo = bp.getContent();

                if (bpo instanceof String) {
                    sb.append(bpo);
                } 
            }
        } else if (o instanceof String) {
            sb.append(o);
        }
        String htmlMessage = sb.toString();
        message = htmlMessage.replaceAll("\\<.*?\\>", "");

        return message;
    }

Это вернет красивую форматированную строку, содержащую исходный текст, но по какой-либо причине также будет полное сообщение, содержащееся в одной строке в конце строки.

Произнесите полученное сообщение:
Эл. адрес
сообщение
test

выход будет:
Эл. адрес
сообщение
текст

emailmessagetext

Я предполагаю, что часть multipart - это сжатая версия содержимого сообщения, но как я могу избежать этого в выходе?

PS, если это актуально, я получаю сообщение, подключившись к gmail через IMAP, а затем извлекая все электронные письма из папки, прежде чем обрабатывать их один за другим.

folder.open(IMAPFolder.READ_ONLY);
messages = folder.getMessages();
Теги:
gmail
imap

1 ответ

2
Лучший ответ

Большинство писем имеют часть тела html, а также часть тела обычного текста (оба).
Вы можете использовать getContentType для получения типа содержимого части тела

  • 0
    Действительно, спасибо за совет. Просто добавив if (bp.getContentType (). Содержит ("TEXT / PLAIN")) перед добавлением, я теперь получаю только то, что мне нужно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню