[java] Javamail을 사용하여 SMTP 서버에 연결하기

이 튜토리얼에서는 Javamail 라이브러리를 사용하여 Java 언어로 SMTP 서버에 연결하는 방법을 알아보겠습니다. Javamail은 Java에서 이메일을 보내고 받는 기능을 제공하기 위해 사용되는 강력한 라이브러리입니다.

1. Javamail 라이브러리 추가

먼저 프로젝트에 Javamail 라이브러리를 추가해야 합니다. Javamail은 Maven이나 Gradle과 같은 의존성 관리 도구를 사용하여 쉽게 추가할 수 있습니다.

Maven을 사용하는 경우 pom.xml 파일에 다음 의존성을 추가합니다:

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

Gradle을 사용하는 경우 build.gradle 파일에 다음 의존성을 추가합니다:

dependencies {
    implementation 'com.sun.mail:javax.mail:1.6.2'
}

의존성을 추가한 후, 프로젝트를 다시 빌드해야 합니다.

2. SMTP 서버에 연결하기

import javax.mail.Authenticator;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;

public class EmailSender {
    public static void main(String[] args) {
        // SMTP 서버 설정
        String host = "smtp.example.com";
        int port = 587;
        String username = "your_username";
        String password = "your_password";

        // 이메일 정보 설정
        String fromEmail = "from@example.com";
        String toEmail = "to@example.com";
        String subject = "Hello!";
        String body = "This is a test email.";

        // SMTP 서버 연결 설정
        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", port);

        // 사용자 인증 정보 설정
        Authenticator authenticator = new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username, password);
            }
        };

        // 메일 세션 생성
        Session session = Session.getDefaultInstance(props, authenticator);

        try {
            // 메일 생성
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress(fromEmail));
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmail));
            message.setSubject(subject);
            message.setText(body);

            // 메일 전송
            Transport.send(message);

            System.out.println("Email sent successfully.");
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }
}

위의 코드는 Javamail을 사용하여 SMTP 서버에 연결하고 이메일을 전송하는 간단한 예제입니다. 코드에서 주석을 통해 각 부분의 역할과 설정하는 방법을 설명하였습니다.

SMTP 서버의 호스트, 포트, 사용자 이름 및 비밀번호를 필요에 맞게 설정한 후에 프로그램을 실행하면 지정한 이메일 주소로 테스트 이메일이 전송됩니다.

이제 Javamail을 사용하여 SMTP 서버에 연결하는 방법을 알게 되었습니다. 이를 활용하여 이메일 발송 기능을 자유롭게 구현할 수 있습니다.

참고 자료