当前位置: 首页 > 知识库问答 >
问题:

Java:获取MIME多部分BodyPart的内容

金霄
2023-03-14

我试图使用BodyPart检索MIME multipart的内容,如下所示

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();

}

但是当附件包含整个MIME多部分主体部分时,art.getContent()提供与整个MIME消息相同的InputStream(没有内容类型、边界等),包括内容类型等。

InputStream来自

ByteArrayOutputStream baos = new ByteArrayOutputStream();
msg.writeTo(baos);

byte[] bytes = baos.toByteArray();
InputStream inputStream = new ByteArrayInputStream(bytes);

其中msgSOAPMessageMIME类型为MTOM

共有1个答案

强宾白
2023-03-14

我的结局是

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();
    String content = new String(read(bodyPart));

    String partContentType =  bodyPart.getContentType();
}

bodyPart.writeTo(MIMEbaos);
String attachment = MIMEbaos.toString();

    private static byte[] read(BodyPart bodyPart) throws MessagingException, IOException
    {
        InputStream inputStream = bodyPart.getInputStream();
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

        int data = 0;
        byte[] buffer = new byte[1024];

        while ((data = inputStream.read(buffer)) != -1) {
            outputStream.write(buffer, 0, data);
        }

        return outputStream.toByteArray();
    }
 类似资料:
  • 本文向大家介绍python-xpath获取html文档的部分内容,包括了python-xpath获取html文档的部分内容的使用技巧和注意事项,需要的朋友参考一下 有些时候我在们需要的用正则提取出html中某一个部分的文字内容,如图: 获取dd部分的html文档,我们要通过它的一个属性去确定他的位置才可以拿到他这个部分我们可以看到他的这个属性class='row clearfix ',然后用xpa

  • 我的springboot版本是2.0.2,我在controller类中创建了全局异常,如下所示:

  • 问题内容: 我只是想知道大多数人如何从Java文件中获取mime类型?到目前为止,我已经尝试了两个工具:。 第一个给我内存异常,第二个没有正确关闭其流。我只是想知道其他人是否拥有他们使用和正常工作的方法/库? 问题答案: 不幸, 之所以无法使用,是因为URL的这种使用将文件锁定了,例如,它是不可删除的。 但是,你有: 还有以下内容,其优点是不仅可以使用文件扩展名,而且还可以浏览内容 但是,正如上面

  • 我将大的zip文件存储在s3存储桶中,因此我想使用python boto3库分块下载它们。 我首先尝试使用方法,但无法仅获取对象的一部分,因此我现在使用方法,该方法支持参数。 然而,在我开始得到零件之前,我无法找到零件的数量。我的意思是,如果我在没有给出零件号的情况下调用get,我会得到以下响应: {'ETag':'493458a23b7d2ed524e8f144aa9e91f4-27','Las

  • 问题内容: 我如何获得JPanel所在的JFrame? 我当前的解决方案是询问面板的父面板(依此类推),直到找到Window: 标准库中有没有一种更优雅的方法? 问题答案: 您可以使用 将返回可转换为顶级类型的Window的方法。

  • 我列出了一个有很多行的表,我想根据{transaction.to_address}值在每一行中使用一个新函数 我想在一个抓取函数中使用useeffect()函数,但是我得到了这个错误消息:渲染了比之前更多的钩子。我已经尝试了我在这里找到的许多解决方案,我已经花了几乎一整天,但我还不够聪明来修复它。 这类似于我的问题,但不适用于我 未捕获的固定冲突:渲染的钩子比上一次渲染期间更多