Computer >> 컴퓨터 >  >> 프로그래밍 >> 프로그래밍

JSP로 HTML 형식의 이메일을 전송하는 방법


다음은 자신의 컴퓨터에서 HTML 형식의 이메일을 전송하는 예제입니다. 이 예제는 localhost가 인터넷에 연결되어 있고 이메일을 전송할 수 있는 환경이라는 것을 전제로 합니다. 실행하기 전에 JavaMail API 패키지JAF(JavaBeans Activation Framework) 패키지에 포함된 모든 JAR 파일이 CLASSPATH에 올바르게 등록되어 있는지 반드시 확인하세요.

이 예제는 일반 텍스트 이메일을 전송하는 기본 예제와 구조가 거의 동일합니다. 가장 중요한 차이점은 setContent() 메서드를 사용한다는 점입니다. 이 메서드의 두 번째 인자로 "text/html"을 지정하면, 메시지 본문에 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 = "abcd@gmail.com";

    // 발신자의 이메일 주소를 지정합니다.
    String from = "mcmohd@gmail.com";

    // localhost에서 이메일을 전송한다고 가정합니다.
    String host = "localhost";

    // 시스템 속성 객체를 가져옵니다.
    Properties properties = System.getProperties();

    // 메일 서버(SMTP)를 설정합니다.
    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>This is actual message</h1>", "text/html" );

        // 메시지를 전송합니다.
        Transport.send(message);
        result = "Sent message successfully....";
    } catch (MessagingException mex) {
        mex.printStackTrace();
        result = "Error: unable to send message....";
    }
%>
<html>
    <head>
        <title>Send HTML Email using JSP</title>
    </head>
    <body>
        <center>
            <h1>Send Email using JSP</h1>
        </center>
      <p align = "center">
         <%
            out.println("Result: " + result + "\n");
         %>
      </p>
   </body>
</html>

핵심 포인트 정리

  • setContent(message, "text/html"): 첫 번째 인자에는 HTML 문자열을, 두 번째 인자에는 MIME 타입인 text/html을 전달하여 브라우저처럼 서식이 적용된 이메일을 만들 수 있습니다.
  • MimeMessage: HTML과 같은 멀티미디어 콘텐츠를 담기 위해서는 일반 Message 대신 MimeMessage 객체를 사용해야 합니다.
  • SMTP 설정: mail.smtp.host 속성에 메일 서버 주소를 지정합니다. 실무 환경에서는 localhost 대신 Gmail SMTP나 사내 메일 서버를 사용하는 경우가 많습니다.
  • 예외 처리: MessagingException을 catch하여 전송 실패 시 사용자에게 결과를 안내할 수 있습니다.

참고로 javax.mail 패키지는 현재 Eclipse 재단으로 이관되어 Jakarta Mail(jakarta.mail)로 명칭이 변경되었습니다. 최신 프로젝트에서는 import 문을 jakarta.mail.* 형태로 변경하고, Maven이나 Gradle에 Jakarta Mail 의존성을 추가하면 동일한 방식으로 사용할 수 있습니다.