2012-11-09 2 views
2

나는 POP3 프로토콜을 사용하여 outlook받은 편지함을 읽는 간단한 프로그램을 구현하려했지만 읽지 않은 메일이 2 개인 경우에도 서버가 제로 메일을 반환합니다. 이 문제가 왜 발생합니까? Microsoft Exchange 서버 설정과 관련이 있습니까?Java Mail API받은 편지함을 읽을 수 없습니다.

public void retrieveEmail() { 
     // JavaMail API - Exchange server to allow IMAP access 

     // mail server connection parameters 
     String user = ""; 
     String password = ""; 

     // connect to my pop3 inbox 
     Properties properties = new Properties(); 

     properties.put("mail.store.protocol", "pop3"); 
     properties.put("mail.pop3.host", host); 
     properties.put("mail.pop3.port", "110"); 
     properties.put("mail.pop3.user", user); 
     properties.put("mail.pop3.timeout", "158000"); 
     properties.put("mail.pop3.connectiontimeout", "158000"); 

     Session session = Session.getInstance(properties); 
     session.setDebug(true); 

     Store store = null; 
     Folder inbox = null; 

     try { 
      store = session.getStore("pop3"); 
      store.connect(host, user, password); 
      inbox = store.getFolder("Inbox"); 
      inbox.open(Folder.READ_ONLY); 

      // get the list of inbox messages 
      int totalMsg = inbox.getMessageCount(); 
      int unread = inbox.getUnreadMessageCount(); 
      Message[] messages = inbox.getMessages(); 
      Message[] msg = inbox.search(new FlagTerm(new Flags(Flag.SEEN), false)); 

      System.out.print("size " + messages .length); 
      if (messages.length == 0) System.out.println("No messages found."); 

      for (int i = 0; i < messages.length; i++) { 

       // stop after listing ten messages 
       if (i > 10) { 
        System.exit(0); 
        inbox.close(true); 
        store.close(); 
       } 

       System.out.println("Message " + (i + 1)); 
       System.out.println("From : " + messages[i].getFrom()[0]); 
       System.out.println("Subject : " + messages[i].getSubject()); 
       Object content = messages[i].getContent(); 

       if (content instanceof String) 
        System.out.print((String)content); 
       /* text/plain = String 
       * multipart" = Multipart 
       * MimeMessage 
       * input stream = Unknown Data Handler 
       */ 

      } 

      inbox.close(true); 
      store.close(); 

     } catch (NoSuchProviderException e) { 
      System.out.println(e.getMessage()); 
     } catch (MessagingException e) { 
      System.out.println(e.getMessage()); 

     } catch (IOException e) { 
      System.out.println(e.getMessage()); 
     } 
    } 

편집 1 :

나는 그것을 디버깅 및 폴더의 변수 전체가 제로

이 도와주세요 것으로 알고 있습니다.

감사합니다.

+2

프로덕션 사용자 이름 + 비밀번호를 게시하지 않기를 바랍니다. – home

+0

Outlook에서 많은 이메일이있는 것으로 나타 났지만 Java Mail API가 Microsoft Exchange 서버에서 메시지를 가져올 수없는 이유는 무엇입니까? – peterwkc

+0

어쩌면 일부 인증 매개 변수가 누락되었습니다. http://www.oracle.com/technetwork/java/faq-135477.html#Exchange-login –

답변

0

'별칭'의 교환 가치는 위의 이메일 계정에 대한 이메일 관리자에게 문의하십시오. 예를 들어 'Bananas!'로 설정된 값이있는 경우 store.getFolder ("Inbox") 대신 store.getFolder ("Bananas!")를 읽으려면 위 코드를 변경해야합니다.

관련 문제