JDK 11버전 이상에서는 activation 라이브러리가 포함되지 않으므로 별도로 추가해야 합니다. activation은 첨부파일 처리와 다양한 MIME 타입을 처리하는 데 필요합니다. 이메일에 파일을 첨부하거나 HTML 형식 메일을 보낼 때 필수적인 라이브러리입니다.
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) 하에 배포됩니다.