MIME 메시지를 구문 분석하는 데 문제가 있습니다. 내가 원하는 특정 첨부 파일이 들어있는 패킷이있는 PCAP 파일이 있습니다. 첨부 파일 하나 (콘텐츠 유형 : 애플리케이션/옥텟 스트림)가 아닌 메일에서 전체 첨부 파일을 검색 할 수 있습니다. 첨부 파일을 여러 개 가져 오려고하면 각 첨부 파일에서 약 70 % 만 얻습니다. Java Mail 파서에 문제가 있습니까? 아니면 제가 잘못하고 있습니까?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;
}
힌트 : http://stackoverflow.com/questions/1748183/download-attachments-using-java-mail – Spindizzy