MimeMultipart сообщение дамп с границами - PullRequest
0 голосов
/ 04 июня 2019

Я пытаюсь зарегистрировать сообщение MimeMultipart с кодом, который выглядит как

MimeMultipart mimeMultipart = null;
try {
    mimeMultipart = (MimeMultipart) msg.getContent();
} catch (IOException e) {
    e.printStackTrace();
} catch (MessagingException e) {
    e.printStackTrace();
}
ByteArrayOutputStream outStream = new ByteArrayOutputStream();

for (int i = 0; i < mimeMultipart.getCount(); i++) {
    BodyPart bodyPart = mimeMultipart.getBodyPart(i);
    String contentType = bodyPart.getContentType();
    bodyPart.writeTo(outStream);
}

outStream.flush();
String content = new String(outStream.toByteArray());
LOGGER.info("Raw message: \r\n" + content);

, но выглядит как только содержимое сообщения MimeMultipart, а не необработанное сообщение (пропущены границы и заголовки).

Также я попробовал просто

msg.writeTo(outStream);
String content = outStream.toString();

, но по какой-то причине он просто выводит заголовок основного сообщения, но не содержит частей тела с заголовками для множественных частей и выглядит как

Date: Fri, 31 May 2019 14:19:36 -0400 (EDT)
From: postmaster@dev.box.local
To: user@dev.box.local
Message-ID: <1293434275.167.1559326776862.JavaMail@devbox>
In-Reply-To: <984954674.27.1559326769277.JavaMail@devbox>
Subject: Re:
MIME-Version: 1.0
Content-Type: multipart/report;
  boundary="----=_Part_166_602016356.1559326776861";
  report-type=delivery-status

Что у меня естьсделано неправильно?

Ответы [ 2 ]

0 голосов
/ 06 июня 2019

Пожалуйста, посмотрите на это https://stackoverflow.com/a/34689614/578855

Похоже, что MimeMultiPart может иметь части тела, которые сами являются MimeMultiPart, поэтому вы должны рекурсивно читать содержимое.

0 голосов
/ 04 июня 2019

Просто используйте msg.writeTo(outStream);

...