JavaMail À» ÀÌ¿ëÇÏ¿© pop3·Î ¸ÞÀÏ °¡Á®¿À±â
* Blocking ¹®Á¦
java ÇÁ·Î¼¼½º ½ÇÇà ½Ã, I/O °¡ ³¡³¯ ¶§±îÁö thread °¡ run »óÅÂÀÌ´Ù. blocking ÀÌ ¹®Á¦°¡ µÈ´Ù¸é thread ¸¦ µû·Î »ý¼ºÇؼ »ç¿ëÇÏÀÚ.
¸¸¾à web ¿¡¼ ±¸Çö ½Ã servlet À» »ç¿ëÇÑ´Ù¸é, ¹®Á¦°¡ µÇ°ÚÁö. application À» ½ºÄÉÁì°É¾î¼ µ¿ÀÛ½ÃÅ°´Â °ÍÀÌ ÁÁ°Ú´Ù.
http://okjsp.pe.kr/bbs?act=VIEW&seq=46721&bbs=bbs3&keyfield=content&keyword=pop3&pg=
K»ç¿¡¼ ±¸Çö ½Ã, ½ºÄÉÁì·¯ µ¹·Á´Þ¶ó°í ¿äûÇßÀ½.
http://okjsp.pe.kr/bbs?act=VIEW&bbs=bbs3&keyfield=content&keyword=pop3&seq=23441&pg=2
JavaMailÀ» ã´Ù°¡ º» ¼Ò½º ÀÔ´Ï´Ù. ½ÇÁ¦ ½ÇÇàµÇ´ÂÁö´Â Àß ¸ð¸£°Ú°í¿ä.
Çѹø Çغ¸½Ã±â ¹Ù¶ø´Ï´Ù.
ÀÏ´Ü ¸ÞÀÏÇÔ¿¡ Á¢±ÙÀ» Çϱâ À§Çؼ´Â session°ú store, folder¶ó´Â ¼¼°¡Áö°¡ ÇÊ¿äÇÕ´Ï´Ù.
±×·¯±â À§Çؼ± ´ÙÀ½°ú °°ÀÌ importÇØ¾ß ÇÕ´Ï´Ù.
import javax.mail.*;
import javax.mail.internet.*;
import javax.actication.*;
private Session sess;
private Store store;
private Folder folder;
±×¸®°í ³ª¼± smtp ¼¹ö¿Í pop3 ¼¹ö¿¡ ¿¬°áÀ» ÇØ¾ß °ÚÁö¿ä ´ÙÀ½°ú °°½À´Ï´Ù.
Properties prop = System.getProperties();
prop.put("mail.smtp.host",smtp ¼¹ö);
sess = Session.getInstance(prop, null); // ¼¼¼Ç smtp ½ÃÀÛ
store = sess.getStore("pop3");
store.connect(pop3¼¹ö, user, pwd); // pop3 ¿¡ ½ºÅä¾î·Î ¿¬°áµÊ
folder = store.getFolder("INBOX"); // store¸¦ ÅëÇØ ÆíÁöÇÔ¿¡ Á¢±ÙÇÕ´Ï´Ù.
folder.open(Folder.READ_ONLY); // Inbox ¹ÞÀºÆíÁöÇÔÀ» ¿±´Ï´Ù.
ÀÌ·¸°Ô Çϸé ÀÌÁ¦ ÆíÁöµéÀ» °¡Á® ¿ÃÁغñ°¡ µÆ½À´Ï´Ù.
folder.open ¸Þ¼Òµå¿¡ ¾²ÀÎ »ó¼ö´Â Javamail API¿¡¼ ã¾Æº¸½Ã±â ¹Ù¶ø´Ï´Ù.
°¡Á®¿À´Â °£´ÜÇÑ ¿¹Á¦¸¦ º¸Áö¿©.
Message[] messages = folder.getMessages(); // Message ´Â ÆíÁö¸¦ ÀǹÌÇÕ´Ï´Ù.
//³»¿ëÀ» »Ì¾Æ³»´Â ºÎºÐÀº ¹Ýº¹¹®À¸·Î »Ì¾Æ³»½Ã´Â°Ô ÁÁÀ»°Ì´Ï´Ù. for¹®À» ¾²¸é
for (int i=0;i<messages.length;i++) ÀÌÇÏ´Â ´ëÃæ ³Ñ¾î°¡°í
º¸³½ ³¯Â¥ ¹Þ±â.. ´Â String date = messages[i].getSentDate() // ³¯Â¥ Æ÷¸Ë¿¡ ¸ÂÃç ¹Ù²Ù¼¼¿ä.
»çÀÌÁî »Ì¾Æ³»±â´Â String size = messages[i].getSize() // »çÀÌÁîµµ Æ÷¸Ë¿¡ ¸ÂÃç ¹Ù²Ù¼¼¿ä.
º¸³½ »ç¶÷ ÁÖ¼Ò Address addr = messages[i].getFrom()[0];
Á¦¸ñ String subject[] = messges[i].getHeader("subject");
subject[0] ÀÌ Á¦¸ñÀÔ´Ï´Ù.
¸ðµç µ¥ÀÌÅÍ´Â ÇÑ±Û º¯È¯ ó¸® ÇØÁÖ¼Å¾ß ÇÒ°Ì´Ï´Ù.
±×¸®°í ¿¬°áÀ» ³¡³¾¶§´Â folder¿Í store¸¦ ´Ý¾Æ ÁÖ¼Å¾ß ÇÕ´Ï´Ù.
±×¸®°í À§¿¡ ÄÚµåµéÀ» ¾²´Â method´Â ¸ðµÎ MessageException 󸮸¦ ÇØÁÖ¼Å¾ß ÇÕ´Ï´Ù.
²À ¼º°øÇϼ¼¿ä.. Àúµµ ¼Ò½º´Â ±¸ÇßÁö¸¸ Å×½ºÆ®¸¦ Çغ¼°÷ÀÌ ¾ø¾î¼ ¾ÆÁ÷ ¸øÇغýÀ´Ï´Ù.
* ¸ÞÀÏ ³»¿ë ¹Þ±â
Part p = body.getBodyPart(0);
if(p.isMimeType("text/*")){
Object content = p.getContent(); <------- ¿ä±â
if (content instanceof String) {
mail.contents = (String) content;
} else if (content instanceof InputStream) {
InputStream in = (InputStream) content;
ByteArrayOutputStream bout = new ByteArrayOutputStream();
byte[] buffer = new byte[8192];
int amount = 0;
while ((amount = in.read(buffer)) >= 0) {
bout.write(buffer, 0, amount);
}
mail.contents = new String(bout.toString());
}
}
* ƯÁ¤ °æ·ÎÀÇ Ã·ºÎÆÄÀÏ °¡Á®¿À±â
try{
Properties props = new Properties();
Session session = Session.getDefaultInstance(props, null);
Store store = session.getStore("pop3");
store.connect(host, user, password);
Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_ONLY);
Message message[] = folder.getMessages();
for (int i=0, n=message.length; i<n; i++) {
if(message[i].isMimeType("text/plain")){
System.out.println("ÀϹÝÅؽºÆ®¸ÞÀÏÀÔ´Ï´Ù.");
}else if(message[i].isMimeType("multipart/*")) { // ÷ºÎÆÄÀÏÀ϶§
System.out.println("÷ºÎ¸ÞÀÏÀÔ´Ï´Ù.");
filename = part.getFileName();
if(filename != null){
InputStream in = part.getInputStream();
FileOutputStream fout = new FileOutputStream(new File(filename));
while(c!=-1){
fout.write(c);
c=in.read();
}
fout.close();
in.close();
}
}
}
folder.close(true);
store.close();
}catch(Exception e){
System.out.print(e);
}