2015-01-29 5 views
0

저는 JavaMail을 사용하여 IMAP 계정에서 메시지 데이터를 가져 왔습니다. 예를 들어, 나는 4 UID 1 메시지의 몸을 검색하기 위해 다음 명령을 사용하여 특정 메시지에 대해 특정 신체 부위를 가져올 수있는 방법이여러 IMAP 가져 오기 명령을 결합하려면 어떻게해야합니까?

UID FETCH 1:4 BODY[] 

있습니까?

UID FETCH (1 BODY[1.3]) (2 BODY[1.1]) (3 BODY[2.1]) (4 BODY[1.4]) 

PS : 예를 들어, 내가 좋아하는 뭔가를 사용하고 싶습니다 나는 또한 4 개 별개의 명령을 보낼 수 있습니다 알고 있지만 성능상의 이유로 나는 각 메시지에 대해 별도의 요청을 할 여유가 없다.

답변

2

각 메시지에 대해 동일한 본문 부분을 검색해야합니다. 당신이 메시지 2, 4 및 메시지 3 제 2 부 제 1 부를 원하는 경우 즉, 당신은 두 개 미만의 명령을 보낼 수 없습니다 :

a uid fetch 2,4 (body[1]) 
b uid fetch 3 (body[3]) 

좋은 소식은 동시에 보낼 수 있다는 것입니다. 명령이 충돌하지 않는 한 첫 번째 결과를 기다리지 않고 두 번째 명령을 보낼 수 있습니다. Javamail을 사용하여이를 수행 할 수있는 방법을 찾을 수 있으면됩니다.

은 (아니면 body.peek [1], 몸과 동일하다 []를 제외하고는 \를 볼 플래그를 설정하지 않습니다.) 답변에 대한

+0

감사합니다. 당신이 stackoverflow에 대한 모든 가져 오기 관련 질문에 대한 책임이있는 것 같습니다 :). "불행히도"당신은 내가 그것을 필요로했을 때 그것이 효과가 없다는 나의 기대를 확인했습니다. 멀티 스레드를 사용하여 명령을 병렬로 보내야합니다. –

+1

몇 시간 후에 그런 질문을 게시하고 나 대신에 [Max] (http://stackoverflow.com/users/1442918/max) 답변을해라.) 쓰레드를 사용하는 것도 하나의 가능성이있다. – arnt

+2

JavaMail은 사용자가 찾고있는 저수준 IMAP 명령을 지원하지 않습니다. JavaMail은 명령을 전송하고 응답을 기다리는 프로토콜 객체에 대한 모든 액세스를 단일 스레드로하기 때문에 여러 스레드가 도움이되지 않습니다. 여러 개의 연결을 사용하는 것을 고려해 볼 수는 있지만 그 자체로 문제가 있습니다. JavaMail 소스 코드를 확장하여 필요한 것을 지원할 수 있습니다. 높은 수준에서 성취하고자하는 것에 대한 배경 지식과 이미 수행 한 성과 분석을 제공 할 수 있습니까? –