JavaMail - POP3로 메일 읽어오기
모하니?/Coding : 2008/08/06 21:03
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();
}
}
}
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. 읽지 않은 새로운 메일만 읽어올 거라면?
흠.. 대강 이정도 생각나는데 다른 건 또 뭐가 있을까요?
'모하니? > Coding' 카테고리의 다른 글
| JavaMail - 첨부 파일 보내기 (0) | 2008/08/07 |
|---|---|
| JavaMail - HTML에 이미지도 같이 보내기 (2) | 2008/08/07 |
| JavaMail - pom.xml에 dependency 추가하기 (0) | 2008/08/07 |
| JavaMail - HTML 메일 보내기 (0) | 2008/08/07 |
| JavaMail - 간단한 Text 메시지 보내기 (0) | 2008/08/07 |
| JavaMail - POP3로 메일 읽어오기 (0) | 2008/08/06 |
| JavaMail 에러 잡기 - javax.mail.MessagingException: [EOF] (0) | 2008/08/06 |
| Mockito - Verifying exact number of invocations / at least once / never (0) | 2008/07/31 |
| Mockito - How about some stubbing? (0) | 2008/07/31 |
| 5시에 들어온 미션~ (0) | 2008/07/30 |
| assertThat()으로 null 여부 확인하기 (0) | 2008/07/30 |





