imap에서 여러 메시지의 첨부 파일을 가져 오는 중입니다. 잘 작동하지만 약 20 메가 바이트의 첨부 파일이 있으면 멈춘 것처럼 보이고 java가 계속되지 않습니다. 나는 첨부 파일의 콘텐츠를하고 문자열로 저장하려면 :Javamail - 큰 첨부 파일을 처리하는 방법?
...
MimeBodyPart attachment = (MimeBodyPart) multipart.getBodyPart(1);
if(!Part.ATTACHMENT.equalsIgnoreCase(attachment.getDisposition())) {
log.error("Part is not an attachment!");
} else {
log.debug("Checking " + localFile.getName() + " with " + attachment.getFileName() + ". Attachment-Size: " + (attachment.getSize()/(1024*1024)) + " mega-bytes.");
InputStream remoteFileIs = attachment.getInputStream();
remoteFileContent = IOUtils.toString(remoteFileIs); //stucked here, when attachment is large
remoteFileIs.close();
...
}
...
이 어떤 솔루션이 있습니까 문제가 발생하는 경우 여기
은?
감사합니다.
이제 작동합니다. 가져 오기를 props.put ("mail.imaps.fetchsize", "22020096"); 21MB입니다. 그 확인은? 페치 크기가 너무 큰 경우 불이익이 있습니까? –
더 많은 메모리를 사용하게되며 처리하기 전에 전체 부품이 다운로드 될 때까지 기다려야합니다. 하지만 IOUtils.toString을 사용할 때도 마찬가지입니다. –
@ 첨부 파일 크기만큼 페치 크기가 필요하지 않습니다. 합리적인 '덩어리'여야하며 짧은 시간 내에 다운로드 할 대상 크기를 설정하십시오. 나는 2 메가 바이트보다 적은 것을 제안 할 것이다. – pstanton