1. 제품
  2.   이메일
  3.   Java
  4.   JavaMail
 
  

간단하고 HTML 기반 이메일 전송을 위한 무료 Java API

첨부 파일, 삽입 이미지, SMTP, IMAP, POP3 프로토콜 지원 및 고급 보안 지원을 갖춘 텍스트 및 HTML 기반 이메일 메시지를 생성하고 전송하는 오픈 소스 Java 이메일 처리 API

JavaMail이란?

엔터프라이즈 애플리케이션과 자동화 시스템 세계에서 프로그래밍 방식으로 이메일을 보내고 받을 수 있는 능력은 단순한 편리함을 넘어 필수 요소입니다. 비밀번호 재설정 및 주문 확인 메일 전송부터 들어오는 지원 티켓 처리까지, 이메일 통합은 핵심 기능입니다. Java 개발자에게 이 기능의 초석은 견고한 오픈 소스 JavaMail API였습니다. 이 포괄적인 제품 페이지에서는 JavaMail API와 그 강력한 기능을 살펴보고, Java 애플리케이션에서 이메일 통합을 시작할 수 있도록 실용적인 코드 예제를 제공합니다.

JavaMail API는 Oracle(구 Sun Microsystems)에서 제공하는 성숙한 오픈 소스 프레임워크로, 메일 및 메시징 애플리케이션을 구축하기 위한 플랫폼 및 프로토콜에 독립적인 구조를 제공합니다. Java 생태계에서 이메일을 처리하기 위한 표준 API이며, SMTP, POP3, IMAP과 같은 기본 이메일 프로토콜의 복잡성을 추상화해 개발자가 깔끔한 객체 지향 인터페이스로 작업할 수 있게 합니다. 라이브러리에는 HTML 이메일 생성 및 전송, 첨부 파일 추가, 인라인 이미지 삽입, 멀티파트 콘텐츠, 강력한 인증 및 보안 지원, 폴더 기반 이메일 지원, 향상된 이메일 검색 및 필터링, SMTP를 통한 이메일 읽기 등 여러 중요한 기능이 포함되어 있습니다.

Previous Next

JavaMail 시작하기

우선 JDK 1.6 이상을 설치해야 합니다. pom.xml에 다음 Maven 의존성을 추가하십시오.

Maven Dependency

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

라이브러리를 GitHub 페이지에서 직접 다운로드할 수 있습니다.

Java 라이브러리를 통한 이메일 메시지 전송

오픈 소스 JavaMail 라이브러리는 Java 애플리케이션 내에서 간단한 텍스트 이메일과 HTML 이메일을 생성하고 전송하는 기능을 포함합니다. 개발자는 기존 이메일을 읽고, 파일 및 이미지를 첨부 파일로 추가하고, 여러 사용자에게 이메일을 보내며, 사용자 정의 헤더를 추가하는 등 다양한 작업을 수행할 수 있습니다. 호스트, 포트 및 인증·TLS 활성화 플래그와 같은 연결 매개변수를 정의해야 합니다. 다음 예제는 SMTP 서버(예: Gmail)를 사용해 기본 텍스트 이메일을 전송하는 방법을 보여줍니다.

SMTP 서버를 통한 기본 텍스트 이메일 전송 (Java API 사용)


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

public class SimpleEmailSender {

    public static void main(String[] args) {
        // Sender's and recipient's email ID
        String from = "your.email@gmail.com";
        String to = "recipient.email@example.com";
        
        // SMTP server configuration (for Gmail)
        String host = "smtp.gmail.com";
        final String username = "your.email@gmail.com";
        final String password = "your-app-password"; // Use an App Password for Gmail

        // Setup mail server properties
        Properties properties = new Properties();
        properties.put("mail.smtp.auth", "true");
        properties.put("mail.smtp.starttls.enable", "true"); // Use TLS
        properties.put("mail.smtp.host", host);
        properties.put("mail.smtp.port", "587");

        // Get the Session object and pass username and password
        Session session = Session.getInstance(properties, new javax.mail.Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username, password);
            }
        });

        try {
            // Create a default MimeMessage object
            Message message = new MimeMessage(session);
            
            // Set From: header field
            message.setFrom(new InternetAddress(from));
            
            // Set To: header field
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
            
            // Set Subject: header field
            message.setSubject("Hello from JavaMail API");
            
            // Set the actual message body
            message.setText("This is a test email sent programmatically using the JavaMail API.");

            // Send message
            Transport.send(message);
            System.out.println("Email sent successfully!");

        } catch (MessagingException e) {
            throw new RuntimeException(e);
        }
    }
}

Java를 통한 이메일 검색 및 필터링

오픈 소스 JavaMail 라이브러리는 폴더 내 이메일을 발신자, 제목, 날짜, 플래그 등 다양한 기준으로 검색하는 전체 지원을 제공합니다. 이는 이메일 클라이언트나 자동화 작업을 개발할 때 특히 유용합니다. AndTerm, OrTerm, NotTerm을 사용해 여러 검색어를 결합할 수도 있습니다. 다음 예제는 특정 발신자에게서 온 메시지를 검색하는 방법을 보여줍니다.

Java 애플리케이션에서 특정 발신자 메시지 검색


Store store = session.getStore("imap");
store.connect("imap.example.com", username, password);

Folder inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_ONLY);

// Search for messages from a specific sender
SearchTerm senderTerm = new FromStringTerm("alerts@example.com");
Message[] found = inbox.search(senderTerm);

for (Message m : found) {
    System.out.println("Subject: " + m.getSubject());
}

inbox.close(false);
store.close();

SMTP, IMAP, POP3 프로토콜 지원

오픈 소스 JavaMail은 기본적으로 가장 일반적인 세 가지 이메일 프로토콜을 지원합니다. SMTP(간단 메일 전송 프로토콜)는 메시지 전송에, POP3(우편 프로토콜 3)는 간단한 이메일 수신에, IMAP(인터넷 메시지 접근 프로토콜)은 폴더, 부분 가져오기 등 보다 고급 이메일 접근에 사용됩니다. 또한 SMTPS, POP3S, IMAPS와 같은 보안 변형도 지원하며, 맞춤형 제공자를 위해 확장할 수 있습니다.

Java를 통한 고급 인증 및 보안

오픈 소스 JavaMail은 이메일 서버와의 보안 통신을 지원합니다. 이는 오늘날 보안에 민감한 환경에서 매우 중요합니다. 라이브러리는 TLS(전송 계층 보안)를 지원하여 애플리케이션과 메일 서버 간 통신 채널을 암호화합니다. 또한 TLS의 전신인 SSL(보안 소켓 계층)도 지원해 안전한 연결을 설정할 수 있습니다. 표준 사용자명/비밀번호 인증도 지원하여 로그인 요구 서버에 연결할 수 있습니다.

 한국인