【发布时间】:2014-04-07 21:42:50
【问题描述】:
我在解析 MIME 消息时遇到问题。我有一些 PCAP 文件,其中包含我想要的特定附件的数据包。我可以从只有一个附件(内容类型:应用程序/八位字节流)的邮件中检索完整的附件。当我尝试获取多个附件时,我只能从每个附件中获取大约 70%。是 Java 邮件解析器有问题还是我做错了什么?
public ArrayList<Attachment> parseMessage() {
ArrayList<Attachment> attachments = new ArrayList<>();
try {
Session s = Session.getDefaultInstance(new Properties());
InputStream is = new ByteArrayInputStream(parts.getBytes());
MimeMessage message = new MimeMessage(s, is);
if(!message.getContentType().contains("multipart"))
return null;
Multipart multipart = (Multipart) message.getContent();
for (int j = 0; j < multipart.getCount(); j++) {
Part part = multipart.getBodyPart(j);
if (part.getDisposition() != null && part.getDisposition().equals("attachment") && part.getContentType().contains("application")) {
attachments.add(new Attachment(this.searchForContent(part),part.getFileName()));
}
}
// }
} catch (MessagingException ex) {
} catch (IOException ex) {
}
return attachments;
}
public byte[] searchForContent(Part part) {
InputStream is = null;
ArrayList<Byte> list = new ArrayList<>();
try {
is = part.getInputStream();
int character = 0;
while ((character = is.read()) != -1) {
list.add((byte) character);
}
} catch (Exception ex) {
}
byte[] bytes = new byte[list.size()];
for (int i = 0; i < bytes.length; i++) {
bytes[i] = list.get(i);
}
return bytes;
}
【问题讨论】:
标签: java email jakarta-mail mime-types email-attachments