¼Ò¼³°°ÀºJSP2ºÎ  7Àå Custom Tag & JavaMail  15 ÆÄÀÏ÷ºÎ Æû¸ÞÀÏ ÀÛ¼º  

 

7.15 ÆÄÀÏ÷ºÎ Æû ¸ÞÀÏ ÀÛ¼ºÇϱâ

 

À§¿¡¼­ »ìÆìº» Ŭ·¡½ºµéÀ» ±â¹ÝÀ¸·Î, ÆÄÀÏÀ» ÷ºÎÇØ¼­ º¸³»´Â ¸ÞÀÏÀ» Æû Çü½Ä°ú ¼­ºí¸´À» ÀÌ¿ëÇØ¼­ ¸¸µé¾î º¸°Ú½À´Ï´Ù. °£´ÜÇÑ ¸ÞÀÏ º¸³»±â¿¡¼­ ¸¸µé¾ú´ø °Í¿¡ ÆÄÀÏ Ã·ºÎ¸¦ À§ÇÑ ºÎºÐÀ» ºÙÀ̰í, Á¤º¸ÀÔ·ÂÀ» À§ÇÑ HTML Æû°ú 󸮸¦ À§ÇÑ ¼­ºí¸´À¸·Î ³ª´« °ÍÀÔ´Ï´Ù.

 

sendmail.html

¸ÞÀϳ»¿ë ÀÔ·ÂÀ» À§ÇÑ Æû¾ç½Ä

<HTML>
<BODY>
<h2>¸ÞÀÏ Àü¼Û</h2>
<FORM ACTION = "/MySample/servlet/mail.SendMail" METHOD="POST"
<pre>
Server     <INPUT NAME="server" value="netian.com">
Name       <INPUT NAME="name" size="10"> E-mail <INPUT NAME="from">  
to(E-mail) <INPUT NAME="to">
Subject    <INPUT NAME="subject" size="40">

Contents<br>
<TEXTAREA NAME="body" cols="50" rows="15"
</TEXTAREA><br>
ÆÄÀÏ÷ºÎ <INPUT TYPE="file" Name="file" value="ã¾Æº¸±â"> <br> 
<INPUT TYPE="submit" value="Àü¼Û"><INPUT TYPE="reset"  value="Ãë¼Ò">  
</pre>
</FORM> 
</BODY>
</HTML>

SendMail.java

÷ºÎ¸ÞÀÏÀ» ¼Û½Å ÇÏ´Â ¼­ºí¸´

package mail;

import javax.servlet.*;
import javax.activation.*;
import javax.servlet.http.*;
import javax.mail.internet.*;
import org.jabook.util.*; 

public class SendMail extends HttpServlet {

  public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws IOException {      
    response.setContentType("text/html;charset=KSC5601");
    PrintWriter out = response.getWriter();
    String nowurl = request.getServletPath();
    out.print(nowurl);

    String host = request.getParameter("server");
    String name = request.getParameter("name");
    String from = request.getParameter("from");
    String to = request.getParameter("to");
    String file = 
      HangulEncoder.toKSC5601(request.getParameter("file"));
    String fileName = file.substring(file.lastIndexOf("\\"));
    String subject = 
      HangulEncoder.toKSC5601(request.getParameter("subject"));
    String content = 
      HangulEncoder.toKSC5601(request.getParameter("body"));
    try {
      Properties prop = System.getProperties();
      Session session = Session.getInstance(prop, null);  

      MimeMessage message = new MimeMessage(session);
      message.setFrom(new InternetAddress(name+"<"+from+">"));
      
      InternetAddress[] tos = InternetAddress.parse(to);
      message.setRecipients(Message.RecipientType.TO, tos);
      message.setSubject(subject, "EUC-KR");


      Multipart multipart = new MimeMultipart();

      BodyPart messageBodyPart = new MimeBodyPart();
      messageBodyPart.setText(content);
      
      multipart.addBodyPart(messageBodyPart);

      messageBodyPart = new MimeBodyPart();

      DataSource source = new FileDataSource(file);
      messageBodyPart.setDataHandler(new DataHandler(source));
      messageBodyPart.setFileName(fileName);
      multipart.addBodyPart(messageBodyPart);

      message.setContent(multipart);

      Transport transport = session.getTransport("smtp");
      transport.connect(host,"", "");
      transport.sendMessage(message, message.getAllRecipients());
      transport.close();
    } catch(Exception e) {
      out.println("<HR><B>¸ÞÀÏ Àü¼Û ¿¡·¯</B><PRE>");
      e.printStackTrace(out);
      out.flush();
      return;
    }
    out.println("<h3>¸ÞÀÏÀÌ ¼º°øÀûÀ¸·Î Àü¼ÛµÇ¾ú½À´Ï´Ù.</h3>");
  }
}

C:\jakarta\webapps\MySample\WEB-INF\classes\mail>javac SendMail.java

 

 

 

 

¸ÕÀú ¿¹Á¦¸¦ ½ÇÇà½ÃŰ¸é °á°ú¿¡¼­ º¸µí, ¸ÞÀÏÀ» ÀÛ¼ºÇÏ´Â ÆûÀÌ ³ª¿À°í, ¸ÞÀÏ ³»¿ëÀ» ¸ðµÎ ä¿î ÈÄ Àü¼ÛÀ» ´©¸£¸é, ÀÌ»óÀÌ ¾øÀ» °æ¿ì ¼º°øÀûÀ¸·Î Àü¼ÛµÇ¾ú´Ù´Â ¸Þ½ÃÁö°¡ ³ª¿É´Ï´Ù. ±×¸®°í ÀÚ½ÅÀÇ ¸ÞÀÏ È£½ºÆ®¿¡ °¡¼­ È®ÀÎÇÏ¸é ¾Æ·¡ÂÊÀÇ ±×¸²°ú °°ÀÌ ÆÄÀϰú ÇÔ²² ¸ÞÀÏÀÌ Àü¼ÛµÈ °ÍÀ» È®ÀÎ ÇÒ ¼ö ÀÖ½À´Ï´Ù.

 

±×·³ ¼Ò½º¸¦ »ìÆìº¸°Ú½À´Ï´Ù. HTML ºÎºÐÀº Æû ÀÛ¼º ºÎºÐÀÌ´Ï °Ç³Ê¶Ù°í ¼­ºí¸´ ºÎºÐÀ» »ìÆìº¸°Ú½À´Ï´Ù.

 

ÆûÀ¸·Î ³Ñ¾î¿À´Â µ¥ÀÌÅ͸¦ request.getParameter ¸Þ¼­µå¸¦ ÅëÇØ¼­ ¹Þ½À´Ï´Ù. ±×·±µ¥ ¿©±â¼­ ÇѰ¡Áö À¯ÀÇÇÏ½Ç Á¡Àº Á¦¸ñ, ÆÄÀÏÀÇ °æ·Î, ³»¿ëÀ» À§Çؼ­ ÇѱÛ󸮸¦ ÇØÁÖ¾î¾ß ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. ±×¸®°í ÆÄÀÏÀÇ °æ·Î´Â »©°í À̸§¸¸ ÃßÃâÇϱâ À§Çؼ­ subString ¸Þ¼­µå¸¦ »ç¿ëÇß½À´Ï´Ù.

 

n        String file =         HangulEncoder.toKSC5601(request.getParameter("file"));

n        String fileName = file.substring(file.lastIndexOf("\\"));

n        String subject = HangulEncoder.toKSC5601(request.getParameter("subject"));

n        String content = HangulEncoder.toKSC5601(request.getParameter("body"));

 

Session °´Ã¼¸¦ »ý¼ºÇϰí SessionÀ¸·ÎºÎÅÍ MimeMessage °´Ã¼¸¦ ¾ò½À´Ï´Ù.

 

n        Session session = Session.getInstance(prop, null);

n        MimeMessage message = new MimeMessage(session);

 

¸ÞÀÎ Content¿Í ÷ºÎÆÄÀÏÀ» °áÇÕÇϱâ À§ÇÑ Multipart °´Ã¼¸¦ »ý¼ºÇÕ´Ï´Ù.

 

n        Multipart multipart = new MimeMultipart();

 

MimeMessageÀÇ HeaderField To, From, Subject¸¦ ¼³Á¤ÇÑ ÈÄ Main messageÀÇ ³»¿ë ¼³Á¤Çϱâ À§ÇÑ BodyPart°´Ã¼¸¦ »ý¼ºÇÏ°í ³»¿ë(Conent)À» ¼³Á¤ÇÕ´Ï´Ù.

 

n        BodyPart messageBodyPart = new MimeBodyPart();

n        messageBodyPart.setText(Content);

 

¸ÞÀÎ ContentÀÇ ³»¿ë(content)À» multipart¿¡ ´õÇÕ´Ï´Ù.

 

n        multipart.addBodyPart(messageBodyPart);

 

÷ºÎÆÄÀÏÀ» À§ÇÑ µÎ¹øÂ° BodyPart¸¦ »ý¼ºÇϰí ÷ºÎÆÄÀÏÀ» DataSource ÇüÅ·Π¾ò½À´Ï´Ù.

 

n        DataSource source = new FileDataSource(filename);

 

¸Þ½ÃÁö¸¦ À§Çؼ­ DataHandler¸¦ DataSource·Î ¼³Á¤ÇÕ´Ï´Ù. ÷ºÎÇÒ ÆÄÀÏÀ» ¼³Á¤ÇÕ´Ï´Ù.

 

n        messageBodyPart.setDataHandler(new DataHandler(source));

n        messageBodyPart.setFileName(filename);

 

µÎ¹øÂ° Part¸¦ Multipart¿¡ ´õÇÏ°í ¸Þ½ÃÁöÀÇ Content¸¦ ¡®multipart¡¯·Î ¼³Á¤ÇÕ´Ï´Ù.

 

n        multipart.addBodyPart(messageBodyPart);

n        message.setContent(multipart);

 

Àü¼ÛÁ¶°ÇÀ» ¼³Á¤ÇÏ°í ¸Þ½ÃÁö¸¦ Àü¼ÛÇÕ´Ï´Ù.

 

n        Transport transport = session.getTransport("smtp");

n        transport.connect(host, id, pass);             

n        transport.sendMessage(message, message.getAllRecipients());

 

 ¸¶Áö¸·À¸·Î transport¸¦ ´Ý¾ÆÁÝ´Ï´Ù.

 

n        transport.close();

 

 ÀÌ·¸°Ô ÆÄÀÏÀ» ÷ºÎÇØ¼­ º¸³»´Â °úÁ¤Àº ¾à°£Àº º¹ÀâÇØ º¸ÀÏ ¼ö ÀÖÁö¸¸, multipart¸¸ Àß ÀÌÇØÇϰí ÀÖ´Ù¸é ¾î·ÆÁö ¾Ê°Ô ÀÛ¼ºÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ´ÙÀ½¿¡´Â ¸ÞÀÏÀ» ¼ö½ÅÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ¼­ »ìÆìº¸°Ú½À´Ï´Ù.



jabookÀúÀÚ¸íÇÔ
Á¦¸ñ:¼Ò¼³°°ÀºJSP2ºÎ
ÀúÀÚ:ÃÖ¿µ°ü