【发布时间】:2019-05-16 03:48:41
【问题描述】:
我正在尝试使用 BodyPart 检索 MIME 多部分的内容,如下所示
ByteArrayOutputStream baos = null;
MimeMultipart mp = new MimeMultipart(new ByteArrayDataSource(inputStream, contentType));
int count = mp.getCount();
baos = new ByteArrayOutputStream();
for (int i = 0; i < count; i++) {
BodyPart bodyPart = mp.getBodyPart(i);
Object content = bodyPart.getContent();
if (content instanceof InputStream) {
// process inputStream
}
bodyPart.writeTo(MIMEbaos);
String attachment = MIMEbaos.toString();
}
但是当attachment 包含整个 MIME 多部分正文部分(包括内容类型等)时,bodyPart.getContent() 提供与整个 MIME 消息相同的 InputStream。
InputStream 来自
ByteArrayOutputStream baos = new ByteArrayOutputStream();
msg.writeTo(baos);
byte[] bytes = baos.toByteArray();
InputStream inputStream = new ByteArrayInputStream(bytes);
其中msg 是SOAPMessage MIME 类型为MTOM
【问题讨论】:
-
预期的结果究竟是什么?你看到了什么?
-
@VGR
bodyPart.getDisposition()为空,bodyPart.getContent()为字节数组输入流而不是字符串。我期待,至少bodyPart.getContent()可以看到 MIME 多部分的当前内容(纯文本),没有相关的标题。 -
inputStream来自哪里?您确定这是多部分 MIME 消息吗? -
@VGR 是的,传入的消息是 MTOM,我需要为它的每个部分获取内容。向 OP 添加了更多代码