private void readEmailListByPop3(String id, String passwd) {
        Properties props = makePOP3Properties();
        Authenticator auth = getAutheticator(id, passwd);
        Session session = Session.getDefaultInstance(props, auth);

        Store store = null;
        Folder folder = null;
        try {
            store = session.getStore("pop3");
            store.connect();
            folder = store.getFolder("INBOX");
            folder.open(Folder.READ_ONLY);
            messages = Arrays.asList(folder.getMessages());
        } catch (NoSuchProviderException e) {
            e.printStackTrace();
        } catch (MessagingException e) {
            e.printStackTrace();
        } finally {
            try {
                folder.close(false);
                store.close();
            } catch (MessagingException e) {
                e.printStackTrace();
            }
        }
    }

대강 짠 코드라 손볼 곳이 많습니다.

1. Message 대신에 별도의 메시지 도메인 클래스를 만드는게 좋을 듯 하고,
2. 예외 처리도 제대로 해야겠죠.
3. 메일을 읽어올 곳이 INBOX가 휴지통이라면?
4. 메시지들을 저 클래스가 컬렉션으로 들고 있게 할 것인가..(지금은 자기가 들고 있음) 말 것인가..(호출한 쪽에서 들고 있게)
5. 메시지들을 전부 읽어오지 말고, 페이징 처리 비슷하게 할듯.
6. imap을 쓰는게 좋을까 pop3를 쓰는게 좋을까? 아니면 둘 다 써야 하는 이유가 있는걸까? 그럴 경우 대부분의 코드가 비슷하고 프로퍼티 설정이나, Store 생성자 인자만 바뀔뿐이니.. 코드를 잘 분리해야함.
7. 읽지 않은 새로운 메일만 읽어올 거라면?

흠.. 대강 이정도 생각나는데 다른 건 또 뭐가 있을까요?