2013-01-16 1 views
0

javamail API를 사용하여 모든 메일 색인 생성을 위해 imap을 통해 내 Gmail 상자를 읽습니다. 기본 폴더가 아닌 다른 모든 폴더를 읽으 려합니다. 아래 코드 부분은 Gmail의 기본 폴더 만 제공합니다.imap을 통해 javamail을 사용하여 중복 Gmail 이메일을 읽지 마십시오

javax.mail.Folder[] folders = store.getDefaultFolder().list("*"); 
for (javax.mail.Folder fold : folders) { 
    if ((fold.getType() & javax.mail.Folder.HOLDS_MESSAGES) != 0) { 
     System.out.println(fold.getFullName() + ": " + fold.getMessageCount()); 
    } 
} 

위의 코드를 사용할 때 표시되지 않는 레이블이 여러 개 있습니다. 다른 방법으로 Gmail의 기본 폴더가 아닌 다른 모든 사용자 정의 레이블을 얻을 수 있습니다. 어떤 전자 메일에 레이블이 하나 이상 있고 해당 메일의 레이블이 있으면 어떤 방법으로도 얻을 수 있습니다. 이것은 같은 메일 읽기를 두 번 피하기위한 것입니다. 메일이 important으로 표시되면 , ALL MAILSIMPORTANT 폴더에 들어 있기 때문입니다. 위의 코드에 따르면 메일이 먼저 읽혀집니다. 만약 내가 그 폴더에있는 메일을 이미 읽었다면 다른 폴더에서 같은 메일을 읽지 않고 과 IMPORTANT과 같은 메일을 읽거나 읽지 않은 것으로 표시하는지 여부와 관계없이 라벨을 가져오고 싶습니다. 나는 javamail과 imap을 처음 사용하고 그것이 작동하도록하는 방법을 생각할 수 없다. 가능한 방법이 있으면 도와주세요

+0

https://developers.google.com/google-apps/gmail/imap_extensions – Max

답변

0

그래야합니다. turning on session debugging을 시도해보고 정확히 어떤 서버가 반환되는지 확인하십시오. 또한 list ("%")를 사용하여 폴더 계층 구조의 단일 레벨 만 나열하십시오.

+0

죄송합니다. 이전에는 루프가 깨지기 시작했습니다. 내 질문의 두 번째 부분에서 할 수있는 일이 무엇인지 생각해보십시오. 즉, 여러 라벨 메일을 한 번만 읽고 해당 메일에 할당 된 모든 라벨을 가져와 중복 데이터가 색인되지 않도록해야합니다. – user850234

관련 문제