java - 带边界的 MimeMultipart 消息转储

标签 java jakarta-mail mime multipart

我正在尝试使用如下代码记录 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 消息的内容,而不是原始消息(缺少边界和 header )。

我也尝试过

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

但由于某种原因,它只是转储主消息 header ,但没有带有多部分 header 的正文部分,看起来像

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

我做错了什么?

最佳答案

只需使用msg.writeTo(outStream);

关于java - 带边界的 MimeMultipart 消息转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56447240/

相关文章:

java - 如何将 MimeBodyPart ContentType 设置为 "text/html"?

java - Java 中的多数据类型数组

java - Java 中的服务器程序并传递对 Socket 对象的引用

java - 在 Java 中使用 POP3 根据指定的日期时间检索电子邮件

java - 如何在邮件 session 中设置发送来源

javascript - 如何在 Node js 中保存表示为字符串的 zip 文件

java - 无法让 maven-war-plugin 排除 jaxb jar

java - 如何获取链接列表上的下一个对象?

java - 错误 - trustAnchors 参数必须非空

C++ gsoap mime/dime 用于 Windows 中的二进制文件