JavaMail - POP3로 메일 읽어오기
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. 읽지 않은 새로운 메일만 읽어올 거라면?
흠.. 대강 이정도 생각나는데 다른 건 또 뭐가 있을까요?