JAVA/Library

[JAVA Library] E-Mail 전송 방법

Coding🌱 2025. 4. 19. 01:16
반응형
SMALL
1 Mail 라이브러리 다운로드 방법

JavaMail은 자바 애플리케이션에서 이메일을 송수신할 수 있도록 도와주는 라이브러리입니다. 

JavaMail을 사용하면 이메일을 작성하고 첨부파일이나 HTML 서식추가해 보낼 수 있으며 다양한 메일 서버와 연동하여 메일을 송수신할 수 있습니다.

📦 JavaMail 라이브러리 설치가 먼저 필요합니다. 아래에서 다운로드 방법을 확인하세요.

라이브러리는 🔗 Maven Repository (javax.mail:1.6.2) 에서 다운로드할 수 있습니다.

⚠️ 주의 : JDK 11버전 이상을 사용하는 경우
JDK 11버전 이상에서는 activation 라이브러리가 포함되지 않으므로 별도로 추가해야 합니다.
activation은 첨부파일 처리다양한 MIME 타입을 처리하는 데 필요합니다. 이메일에 파일을 첨부하거나 HTML 형식 메일을 보낼 때 필수적인 라이브러리입니다.
라이브러리는 🔗 Maven Repository (activation:1.1.1) 에서 다운로드할 수 있습니다.
JDK 버전 activation 필요 여부 설명
JDK 8 이하 필요 없음 JDK에 기본 포함되어 있습니다.
JDK 9 ~ 10 조건부 묘듈 시스템으로 인해 기본 접근이 제한되며 필요한 경우 명시적으로 활성화 해야됩니다.
JDK 11 이상 필요 JDK에서 제거가 되었기 때문에 직접 추가 해주지 않으면 ClassNotFoundException 오류가 발생 가능합니다.
2 Mail 라이브러리 프로젝트에 적용하는 방법
2-1 수동 설정 (JAR 직접 추가)

빌드 도구인 Maven이나 Gradle을 사용하지 않는 경우에는 필요한 라이브러리(JAR 파일)를 직접 다운로드해서 프로젝트에 추가해야 합니다.

 

🔽 아래는 수동으로 라이브러리를 추가하는 전체 과정입니다.

  • lib 폴더 생성 및 라이브러리 추가

  • Build Path에 JAR 파일 추가

 

3 Mail 전송을 위한 사전 설정

Java에서 Mail을 전송하기 위해서는 코드를 작성하는 것뿐만 아니라 외부 프로그램의 접근을 허용하도록 Mail 서버를 사전에 설정하는 과정이 필요합니다.

3-1 Naver Mail 환경 설정

 

4 Mail 코드 예제

 
 
 
JAVA
public class MailUtil {

    // 메일 정보 설정
    private final String FROM = "your_email@naver.com"; // 보내는 사람 이메일
    private final String FROMNAME = "안녕하세요."; // 보내는 사람 이름
    private final String SMTP_USERNAME = "your_email@naver.com"; // SMTP 사용자 이메일
    private final String SMTP_PASSWORD = "your_password"; // SMTP 비밀번호
    private final String HOST = "smtp.naver.com"; // SMTP 서버 주소
    private final int PORT = 587; // 포트
    private final String SUBJECT = "안녕하세요."; // 메일 제목

    public void sendMail(String TO) {
        if (TO == null || TO.trim().isEmpty()) {
            throw new IllegalArgumentException("받는 사람 이메일 주소가 비어 있습니다.");
        }

        final String BODY = String.join("", 
            "<h1 style='color:#4CAF50;'>인증 메일</h1>",
            "<p>이 메일은 <strong>아름다운 사람이 보낸</strong> 아름다운 메일입니다!</p>",
            "<p>감사합니다 :)</p>"
        );

        try {
            Properties props = new Properties();
            props.put("mail.transport.protocol", "smtp");
            props.put("mail.smtp.port", PORT);
            props.put("mail.smtp.starttls.enable", "true");
            props.put("mail.smtp.auth", "true");

            Session session = Session.getInstance(props);
            MimeMessage msg = new MimeMessage(session);
            msg.setFrom(new InternetAddress(FROM, FROMNAME));
            msg.setRecipient(Message.RecipientType.TO, new InternetAddress(TO));
            msg.setSubject(SUBJECT);
            msg.setContent(BODY, "text/html; charset=UTF-8");

            Transport transport = session.getTransport();
            try {
                System.out.println("메일 전송 중...");
                transport.connect(HOST, SMTP_USERNAME, SMTP_PASSWORD);
                transport.sendMessage(msg, msg.getAllRecipients());
                System.out.println("메일 전송 완료!");
            } catch (Exception ex) {
                ex.printStackTrace();
                System.out.println("메일 전송 실패: " + ex.getMessage());
            } finally {
                transport.close();
            }

        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("예외 발생: " + e.getMessage());
        }
    }
}

----------------------------------------------------------------

public class Main {
    public static void main(String[] args) {
        MailUtil mailSender = new MailUtil();
        mailSender.sendMail("receiver@example.com"); // 받는 사람 이메일 입력
    }
}

 

 

 

 

라이선스

이 라이브러리는 CDDL (Common Development and Distribution License) 또는 GPL (General Public License) 하에 배포됩니다.

출처

이 라이브러리는 Maven Central에서 제공됩니다. Maven Central Repository

 

반응형
LIST