2012-06-28 1 views
2

javamail API를 사용하여 내 핫메일 계정에서 읽지 않은 이메일을 모두 반환하는 간단한 Java 프로그램을 작성하려고합니다. 다음 코드는 내가 사용하고있는 코드입니다 :javamail API를 사용하여 읽지 않은 이메일을 hotmail 계정에서 가져올 수 없습니다.

 String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory"; 
    Properties props = new Properties(); 
    props.setProperty("mail.pop3.ssl.enable", "true"); 
    props.setProperty("mail.pop3s.socketFactory.class", SSL_FACTORY); 
    props.setProperty("mail.pop3s.socketFactory.fallback", "false"); 
    props.setProperty("mail.pop3s.port", "995"); 
    props.setProperty("mail.pop3s.socketFactory.port", "995"); 
    Session session = Session.getInstance(props, 
     new javax.mail.Authenticator() { 
      protected PasswordAuthentication getPasswordAuthentication() { 
       return new PasswordAuthentication(username, password); 
      } 
     }); 
     Store store = session.getStore("pop3"); 
     store.connect("pop3.live.com", username, password); 
     System.out.println(store); 

     Folder inbox = store.getFolder("Inbox"); 
     inbox.open(Folder.READ_ONLY); 
     FlagTerm ft = new FlagTerm(new Flags(Flags.Flag.SEEN), false); 
     Message messages[] = inbox.search(ft); 

이 코드의 실수는 무엇입니까? 왜냐하면 나는 읽지 않은 메일 대신 모든 메일을 받고 있기 때문입니다. (난 당신이 사용하고 있으리라 믿고있어) 자신의 번들 POP3 공급자에 대한 Sun의 문서에서 인용

+0

당신이 getUnread 같은 어떤 방법을 찾을 수 있습니까 귀하의 질문에 대한 대답이라고 생각합니다. –

+0

예 inbox.getUnreadMessageCount();라는 메서드가 있습니다. – yashdosi

답변

2

은 - 문서는

POP3 지원에/문서/sundocs 위치한 영구적 인 플래그 없다 ((Folder.getPermanentFlags 참조)). 특히 에서 POP3 메시지에 대해서는 Flags.Flag.RECENT 플래그가 설정되지 않습니다. POP3 사서함의 메시지 중 "새 메시지"를 확인하는 것은 응용 프로그램에 달려 있습니다. 응용 프로그램과 환경의 필요에 따라 을 수행하기위한 몇 가지 전략이 있습니다. 간단한 접근 방식은 응용 프로그램 에 의해 표시되는 최신 메시지를 추적하는 것입니다. 또 다른 방법은 보이는 모든 메시지의 UID 인 (아래 참조)을 추적하는 것입니다. 또 다른 방법은 으로 모든 메시지를 로컬 사서함에 다운로드하여 의 모든 메시지가 POP3 사서함에 정의되어 있습니다. 모든 접근 방식을 사용하려면 클라이언트와 연결된 영구 저장소가 필요합니다.

나는 꽤 많이받은 편지함 폴더의()

관련 문제