[java] Apache Commons Net과 SMTP

이번에는 Apache Commons Net을 사용하여 Java에서 SMTP 프로토콜을 통해 이메일을 보내는 방법에 대해 알아보도록 하겠습니다. Apache Commons Net은 네트워크 프로그래밍을 위한 라이브러리로, SMTP 클라이언트를 구현하는 데 사용될 수 있습니다.

Apache Commons Net 라이브러리 추가

먼저, Maven 또는 Gradle과 같은 빌드 도구를 사용하여 Apache Commons Net 라이브러리를 프로젝트에 추가해야 합니다. Maven을 사용하는 경우, pom.xml 파일에 다음 의존성을 추가할 수 있습니다.

<dependency>
    <groupId>commons-net</groupId>
    <artifactId>commons-net</artifactId>
    <version>3.7</version>
</dependency>

Gradle을 사용하는 경우, build.gradle 파일에 다음과 같이 의존성을 추가할 수 있습니다.

dependencies {
    implementation 'commons-net:commons-net:3.7'
}

의존성을 추가한 후, 프로젝트를 다시 빌드하여 라이브러리를 가져올 수 있습니다.

SMTP 클라이언트 구현

이제 SMTP 클라이언트를 구현해 보겠습니다. 아래는 Apache Commons Net을 사용하여 간단한 이메일 전송 기능을 가진 SMTP 클라이언트의 예시입니다.

import org.apache.commons.net.smtp.*;

public class EmailSender {

    public static void main(String[] args) {
        String smtpServer = "mail.example.com";
        int smtpPort = 25;
        String username = "yourUsername";
        String password = "yourPassword";
        String sender = "sender@example.com";
        String recipient = "recipient@example.com";
        String subject = "Test Email";
        String body = "This is a test email.";

        try {
            SimpleEmail email = new SimpleEmail();
            email.setHostName(smtpServer);
            email.setSmtpPort(smtpPort);
            email.setAuthentication(username, password);
            email.setFrom(sender);
            email.addTo(recipient);
            email.setSubject(subject);
            email.setMsg(body);
            email.send();
            System.out.println("Email sent successfully.");
        } catch (Exception e) {
            System.out.println("Failed to send email: " + e.getMessage());
        }
    }
}

위의 코드에서 smtpServer, smtpPort, username, password, sender, recipient, subject, body 등의 필드를 본인의 환경에 맞게 설정하고 실행하면, 해당 이메일을 성공적으로 보낼 수 있습니다.

마무리

이렇게 Apache Commons Net을 사용하여 SMTP 클라이언트를 구현하여 이메일을 보내는 방법에 대해 알아보았습니다. 물론 이 예시는 간단한 것이지만, 더 복잡한 기능들을 구현할 수도 있습니다. Apache Commons Net 공식 문서와 검색을 통해 보다 자세한 내용을 학습하시기를 권장합니다.

참고 문헌: