ÃֽŠ°Ô½Ã±Û(JAVA)
2018.06.29 / 21:47

JavaMail À» ÀÌ¿ëÇÏ¿© pop3·Î ¸ÞÀÏ °¡Á®¿À±â

aichatbot
Ãßõ ¼ö 257


Å×½ºÆ® ¼º°ø.

* 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);  
}