본문 바로가기
웹프로그램

JSP 폼메일 예제

by 세이박스 2009. 6. 9.
반응형
JavaMail 에는 여러 기능이 있다고 생각됩니다. *.jar 파일 보면 imap도 있고, smtp도 있고, pop3도 있는데, 5개의 javamail class 중에서 오직 mail.jar 만 사용한 거 아니겠습니까. 왜냐구요? 이유는 하나, 초보니까. 퍽! 윽. 그래도 초보는 초보다........ 그래도 열심히 해야죠. 그래서인가?
javamail 에 대해서 더 깊이 들어가진 않겠습니다. 아주 단순한 폼메일 하나 구현하고 javamail은 일단락 짓고 싶네요. 갈길이 멀어서요. 물론 javamail의 고수가 되서 저의 무공을 자랑하고 싶은 황당한 생각도 있지만 강호에 있는 자바 비급들이 무수히 많고, 지금도 새로운 기술들이 퍼붓듯 쏟아지고 있기 때문에, 겸허한 자세로 내공을 높이는 것이 초보의 나아갈 길입니다.
이쯤에서 잠깐 천기누설을 하죠. 모냐구요? jsp를 아주 잘하는 법이죠. 그것도 빨리...
궁금하시죠... 헤헤~ 폭로하겠습니다. JAVA 를 잘 하시면 됩니다. #쿵야~ 퍽! 으악~ 내 다리~
당연한 말을 하냐구요? JAVA 에 대한 기초문법이 튼튼하고 객체에 대해서 잘 이해하고 계신다면, JSP 는 축지법을 쓰는 사람처럼 빨리 사용할 수 있습니다. 특히 ASP를 다룬 저같은 경우는 JSP에서 현재 시간 표현하는 것도 버벅거리고, 문자열 가운데 single quotation (') 을 두 개 연속 single quotations('')으로 대치하는 것도 몰라서 한참을 헤매는 일이 다반사였습니다.
솔직히 저도 SCJP 자격증을 따고, 취직하는 데는 요긴하게 썼지만 취직한 후에 컴퓨터나 수리하고, 회사에서 상사나 분위기나 살피고, 서버나 관리하고 하면서 1년반이라는 시간을 JAVA를 쓰지 않다보니 많은 부분을 다시 복습하고 있는 실정입니다. 애구~ 말이 길어졌네.... 죄송함다.... 그냥 넋두리였슴다.
예제는 파일이 2개입니다. 하나는 입력받는 페이지, 두번째는 처리하는 페이지. 간단하죠? 예쁘게 꾸미는 것은 직접해 보세요.
그럼 첫번째 소스. javamail.htm 와 javamailsend.jsp 입니다. [소스받기]
javamail.htm
<table width=300 border=1 cellspacing=0 style="font-size:9pt">
<form name="f" method="post" action="javamailsend.jsp">
<tr><td width=120 align="right">보내는분골뱅이 <td width=180>
<input type="text" name="from">
<tr><td align="right">받는 분 골뱅이 <td>
<input type="text" name="to" value="heogn@popsmail.com">
<tr><td align="right">이메일 제목 <td>
<input type="text" name="title"">
<tr align="center"><td colspan=2><TextArea name="content" cols="35" rows="10"></textarea>
<tr align="center"><td colspan=2><input type="submit" value="메일전송"></td></tr>
</form>
</table>
전달하는 변수 name 은 대소문자 구분합니다. 주의하세요.
javamailsend.jsp
<%@ page contentType="text/html;charset=euc-kr"
import="java.util.*, javax.mail.*, javax.mail.internet.*"
%> <%! // 함수 선언할 때는 ! 붙여줍니다.
public String kr(String s) {
try {
s = (s == null) ? "" : new String(s.getBytes("8859_1"),"KSC5601");
} catch (java.io.UnsupportedEncodingException uee) {}
return s;
}
%>
<html><head><title>메일전송결과</title>
<%
// 사용자가 입력한 메일 전송 자료를 저장
String mailFrom = null;
String mailTo = null;
String title = null;
String contents = null;
String htmltag = null;
// Resin 일 경우 kr을 뺍니다. 한글변환을 하지 않습니다.
// 톰캣일 경우 소스 그대로 사용합니다. 한글변환 필요합니다.
mailFrom = kr(request.getParameter("from"));
mailTo = kr(request.getParameter("to"));
title = kr(request.getParameter("title"));
contents = kr(request.getParameter("content"));
htmltag = "<font color=BLUE size=2>";
contents = htmltag + contents;
// Session을 생성하기 위해 java.util.Properties 클래스를
// 생성하고 자신이 해당하는 SMTP 호스트 주소를 할당합니다.
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.thrunet.com");

// 기본 Session을 생성하고 할당합니다.
Session msgSession = Session.getDefaultInstance(props, null);
%>
</head>
<body bgcolor="#D0E0FF">
<center>
<%
try {
// Message 클래스의 객체를 Session을 이용해 생성합니다.
MimeMessage msg = new MimeMessage(msgSession);
InternetAddress from = new InternetAddress(mailFrom);
msg.setFrom(from);

InternetAddress to = new InternetAddress(mailTo);
msg.setRecipient(Message.RecipientType.TO, to);

msg.setSubject(title);
msg.setContent(contents, "text/html; charset=EUC-KR");
Transport.send(msg);
%>
축하합니다. 요청하신 메일 전송이 완료되었습니다.<br>
좋은 하루 되세요.<br>
<a href="http://jspstudy.zoa.to">to jspstudy.zoa.to</a>
<%
}
catch (MessagingException e) {
out.println(e.getMessage());
%>
<center>죄송합니다. 메일 전송이 실패하였습니다.<br>
관리자에게 문의하세요.<br>
<a href="#" onClick="history.back()">돌아가기</a>
<% } %>
</center></body></html>

길게 설명하지 않아도 될 것 같습니다. 소스가 아주 평이하거든요. 중간중간에 있는 프로그램들의 기능을 잘 보시기 바랍니다. 이해고 뭐고 평이한 소스라...
애구 졸려... 오늘은 이만하겠습니다. 다음은 jdbc 강좌를 준비하겠습니다. 수고하셨습니다. 눈꺼풀 거~ 되게 무겁넹!
 
참고 : http://www.jspschool.com
반응형