2015-01-27 4 views
3

JavaMail 1.5.2를 사용하여 IMAP 계정에서 메시지를 읽습니다. 내가 날짜,에서와 같이, 어떤 메시지 데이터를 프리 페치 호스트, 메시지 ID 등 : 그러나JavaMail에서 미리보기 미리보기 메시지

Folder folder = store.getFolder("inbox"); 
folder.open(Folder.READ_ONLY); 

FetchProfile fp = new FetchProfile(); 
fp.add(FetchProfile.Item.ENVELOPE); 
fp.add(FetchProfile.Item.CONTENT_INFO); 
fp.add("Message-ID"); 

Message msgs[] = folder.getMessages(); 
folder.fetch(msgs,fp); 

에 요청의 수를 줄이기 위해, 나는 또한을 생성 할 콘텐츠의 일부 부분을 프리 페치 할 모든 첨부 파일이 포함 된 전체 메시지를로드하지 않고도 메일의 텍스트를 미리 볼 수 있습니다. 예를 들어 "text/plain"유형이 있고 첨부 파일이없는 콘텐츠의 모든 부분을 미리 가져 오려고합니다. 그게 가능하니?

추신 : fp.add(IMAPFolder.FetchProfileItem.MESSAGE)과 같은 솔루션을 검색하지 않습니다. 전체 첨부 파일이 모두 인 프리 페치가 있기 때문입니다.

답변

1

처음에는 retrieve the bodystructure이어야하고 메시지 구조를 반복하고 각 부분의 MIME 형식을 확인한 다음 원하는 부분을 다운로드하십시오. IMAP을 사용하면 하나의 명령을 사용하여 모든 파트를 다운로드 할 수 있으므로 Javamail이 약간 영리한 경우 몇 개의 본문 부분이 다운로드 되더라도 두 개의 IMAP 명령으로이 작업을 수행 할 수 있습니다.

유선 트래픽을보기를 좋아하는 유형 인 경우 IMAP 명령은 a uid fetch 234789 bodystructure 다음에 b uid fetch 234789 (body.peek[1.1] body.peek[2])과 같은 형식이어야합니다.

+0

매우 도움이되는 답변에 감사드립니다. 대담한 것을 용서해주세요. 그러나 메시지 데이터를 가져 오기 위해 IMAP 명령을 작성하고 보내는 방법을 보여주는 Java 코드를 추가 할 수 있습니까? 나는 전에 이것을 한 적이 없으며 방법을 알아 내는데 며칠이 걸릴 것입니다. 이전처럼 이런 일을 한 것으로 보이므로 일부 코드를 공유 할 수 있다면 정말 고맙겠습니다. –

+0

IMAP을 사용하기 전에 이런 종류의 작업을 수행했지만 Javamail 라이브러리는 또 다른 이야기입니다. 나는 처음부터 새로 작성하지 않은 Javamail 코드만을 읽고 수정 했으므로 10-20 라인 만해도 1 시간 이상 걸릴 것이지만 Stack Overflow에 쓸 수있는 것보다 많습니다. 죄송합니다. – arnt

+0

죄송합니다. 이런 종류의 문제에 대해 이미 JavaMail 관련 코드를 작성해 두었다가 여기에 신속하게 복사하여 붙여 넣을 수 있다고 생각했습니다. 나는 당신의 대답이 제 문제에 대한 적절한 해결책으로 인도 할 것이라고 확신합니다. FYI : 답변을 더 빨리 받기 위해 1 ~ 2 일 정도 기다려야하므로 즉시 답을 수락하지 않겠습니다. –