JSP(JavaServer Pages)를 사용해 이메일을 전송하려면 서버에 JavaMail API와 JavaBeans Activation Framework(JAF)가 반드시 설치되어 있어야 합니다.
1. 필요한 라이브러리 준비하기
JavaMail API: 자바 공식 웹사이트에서 최신 버전(버전 1.2)을 다운로드할 수 있습니다.
JAF(JavaBeans Activation Framework): 역시 자바 공식 웹사이트에서 최신 버전(버전 1.0.2)을 내려받을 수 있습니다.
두 파일을 모두 다운로드한 후 압축을 해제하면, 각각의 최상위 디렉터리 안에 여러 개의 jar 파일이 포함되어 있는 것을 확인할 수 있습니다. 이메일 전송 기능을 사용하기 위해서는 mail.jar와 activation.jar 파일을 시스템의 CLASSPATH에 추가해야 합니다.
2. 간단한 이메일 전송 예제
다음은 로컬 머신에서 이메일을 전송하는 기본적인 예제입니다. 이 예제는 localhost가 인터넷에 연결되어 있고, 이메일을 전송할 수 있는 환경이라고 가정합니다. 실행 전에 JavaMail API 패키지와 JAF 패키지의 모든 jar 파일이 CLASSPATH에 등록되어 있는지 꼭 확인하세요.
예제 코드
<%@ page import = "java.io.*,java.util.*,javax.mail.*"%>
<%@ page import = "javax.mail.internet.*,javax.activation.*"%>
<%@ page import = "javax.servlet.http.*,javax.servlet.*" %>
<%
String result;
// 수신자 이메일 주소를 지정합니다.
String to = "abcd@gmail.com";
// 발신자 이메일 주소를 지정합니다.
String from = "mcmohd@gmail.com";
// localhost에서 메일을 전송한다고 가정합니다.
String host = "localhost";
// 시스템 속성 객체를 가져옵니다.
Properties properties = System.getProperties();
// 메일 서버를 설정합니다.
properties.setProperty("mail.smtp.host", host);
// 기본 Session 객체를 가져옵니다.
Session mailSession = Session.getDefaultInstance(properties);
try {
// 기본 MimeMessage 객체를 생성합니다.
MimeMessage message = new MimeMessage(mailSession);
// From 헤더 필드를 설정합니다.
message.setFrom(new InternetAddress(from));
// To 헤더 필드를 설정합니다.
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(to));
// 제목(Subject) 헤더 필드를 설정합니다.
message.setSubject("This is the Subject Line!");
// 실제 메시지 본문을 설정합니다.
message.setText("This is actual message");
// 메시지를 전송합니다.
Transport.send(message);
result = "Sent message successfully....";
} catch (MessagingException mex) {
mex.printStackTrace();
result = "Error: unable to send message....";
}
%>
<html>
<head>
<title>Send Email using JSP</title>
</head>
<body>
<center>
<h1>Send Email using JSP</h1>
</center>
<p align = "center">
<%
out.println("Result: " + result + "
");
%>
</p>
</body>
</html>3. 실행 방법
위 코드를 SendEmail.jsp 파일로 저장한 뒤, 브라우저에서 URL https://localhost:8080/SendEmail.jsp를 호출하면 지정된 이메일 주소인 abcd@gmail.com으로 메일이 전송됩니다. 정상적으로 처리되면 아래와 같은 결과 화면을 확인할 수 있습니다.
실행 결과
Send Email using JSP Result: Sent message successfully....
마무리
이처럼 JavaMail API와 JAF만 준비되어 있다면 JSP에서 몇 줄의 코드로도 텍스트 기반 이메일을 손쉽게 전송할 수 있습니다. 실제 운영 환경에서는 SMTP 서버 정보, 인증 설정, HTML 형식 메일 전송, 첨부 파일 추가 등의 확장 기능도 함께 고려하면 더욱 완성도 높은 메일 발송 시스템을 구축할 수 있습니다.