웹 애플리케이션이나 백엔드 서버를 개발하다 보면, 사용자에게 알림 메일을 보내야 할 때가 종종 있습니다. 예를 들어, 회원가입 확인 메일이나 상담 신청 시 자동 회신 메일 같은 경우죠. 어떻게 해야 할까요?
이번 글에서는 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에서 이메일을 보내는 게 생각보다 어렵지 않죠? 위 예제를 잘 정리해두면, 이후에 다양한 알림이나 자동 이메일 시스템을 만들 때 큰 도움이 될 거예요. 도움이 되셨다면 댓글이나 공감 부탁드립니다 😊
'JAVA' 카테고리의 다른 글
JSP 문자열 자르기, 실전코딩 (+코드예제) (30) | 2025.04.18 |
---|---|
JSP 아이피 확인 방법! 사용자, 프록시, 서버 (+코드예제) (5) | 2025.04.15 |