English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

JSP 이메일 전송

JSP를 사용하여 이메일 전송 기능을 구현하는 것은 매우 간단하지만, JavaMail API가 필요하며 JavaBean Activation Framework을 설치해야 합니다.

  • Java 웹사이트에서 최신 버전의 JAF를 다운로드할 수 있습니다. JavaMail에서, 웹 페이지 오른쪽에 있는 Downloads 链接을 클릭하여 다운로드하세요。

  • Java 웹사이트에서 최신 버전의 JAF를 다운로드할 수 있습니다. JAF(버전 1.1.1)

이 파일을 다운로드하고 압축을 풀어보세요. 루트 디렉토리에서는 일련의 jar 패키지를 볼 수 있습니다. mail.jar 패키지와 activation.jar 패키지를 CLASSPATH 변수에 추가하세요.

간단한 이메일 보내기

이 예제는 어떻게 localhost에서 간단한 이메일을 보내는지 보여줍니다. localhost가 네트워크에 연결되어 있고 이메일을 보낼 수 있는지 확인해 주세요. 동시에 mail.jar 패키지와 activation.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 = "[email protected]";
   // 보내는 사람의 이메일
   String from = "[email protected]";
   // 당신이 로컬 호스트에서 이메일을 보내는 것을 가정합니다
   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>JSP를 사용하여 이메일 보내기</title>
</head>
<body>
<center>
<h1>JSP를 사용하여 이메일 보내기</h1>
</center>
<p align="center">
<% 
   out.println("Result: " + result + "\n");
%>
</p>
</body>
</html>

지금 http:에 접근하세요://localhost:8080/SendEmail.jsp, 이는 [email protected]에 이메일을 보내고 다음과 같은 결과를 표시합니다:

JSP를 사용하여 이메일 보내기
Result: 메시지 성공적으로 전송됨....

이메일을 여러 명에게 보내고 싶다면 다음과 같은 메서드를 사용하여 여러 이메일 주소를 지정할 수 있습니다:

void addRecipients(Message.RecipientType type, 
                   Address[] addresses)
throws MessagingException

파라미터 설명:

  • type: 이 값은 TO(수신자), CC 또는 BCC로 설정됩니다. CC는 Carbon Copy(참조 복사), BCC는 Blind Carbon Copy(숨겨진 참조 복사)를 의미합니다. 예제 프로그램에서는 TO를 사용합니다.

  • addresses: 이메일 주소 배열입니다. 지정된 이메일 주소를 사용할 때는 InternetAddress() 메서드를 사용해야 합니다.

HTML 이메일을 보내기

이 예제는 간단한 HTML 이메일을 전송합니다. localhost가 네트워크에 연결되어 있고 이메일을 전송할 수 있는지 확인해 주세요. 동시에 mail.jar 패키지와 activation.jar 패키지가 CLASSPATH 변수에 추가되어 있는지 다시 확인해 주세요.

이 예제는 이전 예제와 매우 유사하지만, 이 예제에서는 setContent() 메서드를 사용하여 "text}}/html"를 두 번째 매개변수로 전달하여 메시지에 HTML 내용이 포함되었음을 나타냅니다.

<%@ 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 = "[email protected]";
   // 보내는 사람의 이메일
   String from = "[email protected]";
   // 당신이 로컬 호스트에서 이메일을 보내는 것을 가정합니다
   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!");
     
      // HTML 메시지 설정
      message.setContent("<h1>이 실제 메시지는</h1>",
                            "text/html" );
      // 메시지 전송
      Transport.send(message);
      result = "Sent message successfully....";
   }catch (MessagingException mex) {
      mex.printStackTrace();
      result = "Error: unable to send message....";
   }
%>
<html>
<head>
<title>JSP를 사용하여 HTML 이메일 보내기</title>
</head>
<body>
<center>
<h1>JSP를 사용하여 이메일 보내기</h1>
</center>
<p align="center">
<% 
   out.println("Result: " + result + "\n");
%>
</p>
</body>
</html>

이제 위의 JSP 파일을 사용하여 HTML 메시지의 이메일을 보내기 위해 시도할 수 있습니다.

이메일에 첨부 파일을 포함하다

이 예제는 첨부 파일이 포함된 이메일을 보내는 방법을 보여줍니다.

<%@ 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 = "[email protected]";
   // 보내는 사람의 이메일
   String from = "[email protected]";
   // 당신이 로컬 호스트에서 이메일을 보내는 것을 가정합니다
   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!");
      // 메시지 부분 생성
      BodyPart messageBodyPart = new MimeBodyPart();
      // 메시지 채우기
      messageBodyPart.setText("This is message body");
      
      // 멀티미디어 메시지 생성
      Multipart multipart = new MimeMultipart();
      // 텍스트 메시지 부분 설정
      multipart.addBodyPart(messageBodyPart);
      // 부록 부분
      messageBodyPart = new MimeBodyPart();
      String filename = "file.txt";
      DataSource source = new FileDataSource(filename);
      messageBodyPart.setDataHandler(new DataHandler(source));
      messageBodyPart.setFileName(filename);
      multipart.addBodyPart(messageBodyPart);
      // 전체 메시지 전송
      message.setContent(multipart );
      // 메시지 전송
      Transport.send(message);
      String title = "Send Email";
      result = "Sent message successfully....";
   }catch (MessagingException mex) {
      mex.printStackTrace();
      result = "Error: unable to send message....";
   }
%>
<html>
<head>
<title>Send Attachement Email using JSP</title>
</head>
<body>
<center>
<h1>Send Attachement Email using JSP</h1>
</center>
<p align="center">
<% 
   out.println("Result: " + result + "\n");
%>
</p>
</body>
</html>

사용자 인증 부분

이메일 서버가 사용자 인증을 위해 사용자 이름과 비밀번호가 필요하다면, 다음과 같이 설정할 수 있습니다:

 properties.setProperty("mail.user", "myuser");
 properties.setProperty("mail.password", "mypwd");

양식을 통해 이메일을 보내기

HTML 양식을 사용하여 이메일을 받아들이고, request 객체를 통해 모든 이메일 정보를 가져옵니다:

String to = request.getParameter("to");
String from = request.getParameter("from");
String subject = request.getParameter("subject");
String messageText = request.getParameter("body");

이 정보를 얻은 후, 앞서 언급한 예제를 사용하여 이메일을 보낼 수 있습니다.