본문 바로가기
JAVA

JAVA로 이메일 보내기, 간단한 SMTP 설정 (+코드예제)

by 규루리 2025. 4. 4.

웹 애플리케이션이나 백엔드 서버를 개발하다 보면, 사용자에게 알림 메일을 보내야 할 때가 종종 있습니다. 예를 들어, 회원가입 확인 메일이나 상담 신청 시 자동 회신 메일 같은 경우죠.  어떻게 해야 할까요?

이번 글에서는 Java에서 이메일을 보내는 방법을 아주 쉽게 설명해드릴게요. 어렵게 느껴질 수도 있지만, 기본적인 구조만 알면 생각보다 간단합니다.

 

JavaMail API란?

Java에서 이메일을 보내기 위해서는 JavaMail API를 사용합니다. 이 라이브러리는 Java 프로그램이 이메일을 전송하거나 수신할 수 있도록 도와주는 공식적인 도구입니다. SMTP 서버를 통해 Gmail 같은 이메일 서비스로 메시지를 보낼 수 있어요.

 


 

1. 먼저 라이브러리를 설치해요

Java 프로젝트에 JavaMail을 추가해야 해요. Maven을 쓰고 있다면 pom.xml에 아래 코드를 추가해 주세요

<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.6.2</version>
</dependency>

버전에 따라 취약점이 있을 수 있으니 https://mvnrepository.com/ 에서 취약점과 서버의  java 버전에 맞는 걸로 선택하세요.

 

 

 

2. 자바  작성

이제 실제로 이메일을 보내는 코드를 작성해볼게요. 아래 코드는 Gmail SMTP 서버를 사용해서 이메일을 보내는 예시입니다.

import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;

public class EmailSender {
    public static void main(String[] args) {
        String host = "smtp.gmail.com";
        final String username = "your-email@gmail.com"; // 보내는 사람 이메일
        final String password = "your-password";        // 앱 비밀번호
        String recipient = "recipient@example.com";     // 받는 사람 이메일

        Properties props = new Properties();
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.host", host);
        props.put("mail.smtp.port", "587");

        Session session = Session.getInstance(props,
            new Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(username, password);
                }
            });

        try {
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress(username));
            message.setRecipients(
                Message.RecipientType.TO,
                InternetAddress.parse(recipient)
            );
            message.setSubject("Java 이메일 테스트");
            message.setText("안녕하세요! 이건 Java로 보낸 첫 번째 이메일이에요 :)");

            Transport.send(message);
            System.out.println("이메일 전송 성공!");

        } catch (MessagingException e) {
            e.printStackTrace();
            System.out.println("이메일 전송 실패: " + e.getMessage());
        }
    }
}

 

 

 

3. 이메일 전송이 안 될 때?

  • 비밀번호 오류 : Gmail을 사용하는 경우, 일반 비밀번호 대신 앱 비밀번호를 생성해서 사용해야 해요. 2단계 인증이 켜져 있어야 앱 비밀번호를 만들 수 있어요.
  • 디버깅 모드 : 문제를 찾기 어려울 때는 session.setDebug(true);를 사용하면 자세한 로그를 확인할 수 있습니다.

 

 

 

마무리하며

Java에서 이메일을 보내는 게 생각보다 어렵지 않죠? 위 예제를 잘 정리해두면, 이후에 다양한 알림이나 자동 이메일 시스템을 만들 때 큰 도움이 될 거예요.  도움이 되셨다면 댓글이나 공감 부탁드립니다 😊

728x90
반응형
LIST