多部分/混合块MIME响应:转换为单个文件



Web服务返回一个MIME文件作为InputStream,其中包含以下内容。我使用Java Apache HTTPClient来发出请求:

MIME-Version:1.0
Content-Type:multipart/mixed; 
boundary="----=_Part_58_1750763977.1605815692305"
------=_Part_58_1750763977.1605815692305
Content-Type: application/octet-stream; name=preview.pdf
Content-ID: response-1
Content-Disposition: attachment; filename=preview.pdf
%PDF-1.7
[...]
------=_Part_67_626667127.1605818243111
Content-Type: application/octet-stream; name=thumbnail.jpg
Content-ID: response-2
Content-Disposition: attachment; filename=thumbnail.jpg
------=_Part_58_1750763977.1605815692305
Content-Type: application/octet-stream; name=report.xml
Content-ID: response-3
Content-Disposition: attachment; filename=report.xml

现在如何将这些块转换为单个文件?我试过javax。邮件和MIME文件,但未成功。

我设法将消息解析为mime,并将附件保存为文件:

HttpResponse response = client.execute(post);
Session s = Session.getInstance(new Properties());
MimeMessage myMessage = new MimeMessage(s, response.getEntity().getContent());
Multipart multipart = (Multipart) myMessage.getContent();
for (int i = 0; i < multipart.getCount(); i++) {
BodyPart bodyPart = multipart.getBodyPart(i);
InputStream is = bodyPart.getInputStream();
File f = new File("tmp/" + bodyPart.getFileName());
FileOutputStream fos = new FileOutputStream(f);
byte[] buf = new byte[4096];
int bytesRead;
while((bytesRead = is.read(buf))!=-1) {
fos.write(buf, 0, bytesRead);
}
fos.close();
}

通过使用

compile([group: 'tech.blueglacier', name: 'email-mime-parser', version: '1.0.5'])

最新更新