2011-09-06 6 views
3

가장 최근에 활성화 된 Gmail 스레드 목록을 얻는 최적의 방법을 모색 중입니다.Gmail IMAP, 가장 최근에 활성화 된 X 개의 Gmail 스레드에 대한 최적의 방법 검색

배경 : 나는 자바는 Google 교육용 애플리케이션 도메인에 IMAP with OAuth 접근 사용하고

. 읽지 않은 메시지가 들어있는 마지막 20 개의 스레드를 나열 할 수있는 Gmail Atom inbox feed을 사용할 수 있습니다. 이 피드에 대한 액세스는 OAuth/IMAP을 사용하여 생성 한 것보다 훨씬 빠릅니다.

Gmail Atom받은 편지함 피드를 IMAP과 비교할 때 IMAP과 함께 사용하는 것의 이점은 20 가지가 아닌 임의의 수의 메일에 액세스 할 수 있으며 메일 읽기, 스레드 크기 가져 오기, 관련 Google 라벨 가져 오기, 할당량 가져 오기 세부 정보 및 플래그 확인. 본질적으로 이는 내 사용자에게 Gmail과 유사한 경험을 제공합니다 (Google 포털의 읽기 전용 환경 만 필요함). 내 문제는 IMAP 액세스가 Atom 피드보다 상당히 느리다는 것입니다. IMAP 방법의 비교는 약 10 초가 걸리며 Atom 피드는 보통 2 초 이내에 반환됩니다.

저는 Gmail IMAP ExtensionsGmail Advanced Search syntax을 알고 있고 계속 사용해 왔습니다.

현재 방법 :

내 IMAP받은 편지함에서 상위 40 스레드를 원하는 상상해보십시오. 현재 메시지의 임의의 번호를 다운로드 (40 * 4), X-GM-THRID 만 가져 오는 중입니다. 내가받은 편지함 목록을 다 소모하거나 내 목표 스레드 수에 도달 할 때까지 (필요한 경우 더 많은 메시지 가져 오기)이 스레드 ID를 저장하는 이러한 메시지를 반복합니다.

다음 IMAP 검색을 수행하는 데 사용할 수있는 Gmail 스레드 ID 목록이 있습니다 (어떤 메시지 세부 정보가 필요한지에 따라 적절한 FetchProfile.Item이 있습니다). 반복보다 더 좋은 방법이 있나요

LinkedHashMap<Long, Message[]> threadMap; 

:

내가 좋아하는 뭔가 (멋진 Google Guava/Google Collections Multimap과 사용) 생산 검색 결과를 반복 :

Multimap<Long, Message> threadMultiMap = LinkedListMultimap.create(); 

을이 쉽게로 마사지한다 X 개의 개별 메시지 스레드가 식별 될 때까지 INBOX를 통해?

답변

1

실제로 대답이 아니라 관련 검색어입니다.


마크, 나는 (http://code.google.com/p/java-gmail-imap/wiki/DisplayingGmailThreadBasedView)

, 내가의 소스에 XoauthAuthenticator을 찾고 당신의 lib 디렉토리 지원 3 다리가 OAuth를 시도 하는가에 대한 답변으로 댓글을 게시하도록하겠습니다 당신의 API 요청에 따라 repo하고 그것을 찾을 수 없습니다.

감사


안녕 agallego

,

내가 XOAUTH와 java-gmail-imap를 사용합니다.JavaMail에는 명시 적으로 XOAUTH를 사용하기 위해 변경해야 할 사항이 없습니다.

XOAUTH 프로젝트 (google-mail-xoauth-toolsgoogle-mail-xoauth-tool-java-two-legged)를 보면 Gmail 인증에 사용할 수있는 SASL 제공 업체를 만들 수 있음을 알 수 있습니다. 예 : XoauthAuthenticator.java 난이 도움이되기를 바랍니다

,

마크

관련 문제