[java] Javamail을 사용하여 이메일에 새 콘텐츠 알림 추가하기

이메일은 대화, 정보 교류 및 중요한 업무 관련 알림 등 많은 용도로 사용됩니다. 프로그램적으로 이메일을 보내고 받는 것은 Javamail API를 이용하여 쉽게 할 수 있습니다. 이번 포스트에서는 Javamail을 사용하여 이메일에 새 콘텐츠 알림을 추가하는 방법을 알아보겠습니다.

1. Javamail 라이브러리 추가하기

Javamail을 사용하기 위해서는 먼저 해당 라이브러리를 프로젝트에 추가해야 합니다. Maven을 사용하는 경우, pom.xml 파일에 다음 의존성을 추가합니다:

<dependency>
    <groupid>javax.mail</groupid>
    <artifactid>javamail</artifactid>
    <version>1.6.2</version>
</dependency>

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

dependencies {
    implementation 'javax.mail:javamail:1.6.2'
}

의존성을 추가하면 Javamail API를 사용할 수 있게 됩니다.

2. 이메일 보내기

먼저, 이메일을 보내기 위해 javax.mail.Session 객체를 설정해야 합니다. 이 객체는 SMTP 서버와의 연결을 설정하는 데 사용됩니다. 예를 들면 다음과 같습니다:

Properties props = new Properties();
props.put("mail.smtp.host", "smtp.example.com");
props.put("mail.smtp.port", "587");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");

Session session = Session.getInstance(props, new Authenticator() {
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication("your_email@example.com", "your_password");
    }
});

위의 코드에서 mail.smtp.hostmail.smtp.port는 SMTP 서버의 호스트와 포트를 설정하는 부분입니다. 그리고 mail.smtp.authmail.smtp.starttls.enable는 인증 및 TLS 암호화를 사용할지 여부를 설정하는 부분입니다. 마지막으로 Authentication 클래스를 작성하여 이메일 계정의 사용자 이름과 비밀번호를 제공해야 합니다.

이제 실제로 이메일을 보낼 수 있습니다. 다음은 간단한 예제입니다:

try {
    Message message = new MimeMessage(session);
    message.setFrom(new InternetAddress("your_email@example.com"));
    message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("recipient_email@example.com"));
    message.setSubject("New Content Notification");
    message.setText("Hello, there is new content available!");

    Transport.send(message);

    System.out.println("Email Sent Successfully");
} catch (MessagingException e) {
    e.printStackTrace();
}

위의 코드에서 setFrom 메서드를 사용하여 발신자 이메일 주소를 설정하고, setRecipients 메서드를 사용하여 수신자 이메일 주소를 설정합니다. 그리고 setSubject 메서드로 이메일의 제목을 설정하고, setText 메서드로 이메일의 본문을 설정합니다. Transport.send 메서드를 호출하여 이메일을 보낼 수 있습니다.

3. 새 콘텐츠 감지 및 이메일로 알림 보내기

새 콘텐츠가 추가되었을 때 이메일로 알림을 보내려면, 콘텐츠 감지 로직을 구현해야 합니다. 이 로직은 콘텐츠의 출처에 따라 다를 수 있습니다. 예를 들어, 데이터베이스 내의 내용이 변경되었는지 확인하고, RSS 피드가 업데이트되었는지 확인하는 등의 작업을 수행해야 합니다.

일단 새로운 콘텐츠가 감지되면, 앞서 소개한 이메일 보내기 로직을 사용하여 알림 이메일을 보낼 수 있습니다. 이 과정은 이메일을 보낼 때와 동일합니다.

4. 요약

이번 포스트에서는 Javamail을 사용하여 이메일에 새 콘텐츠 알림을 추가하는 방법을 알아보았습니다. 먼저 Javamail 라이브러리를 프로젝트에 추가하고, 이메일을 보내기 위해 javax.mail.Session 객체를 설정했습니다. 이후 실제로 이메일을 보내는 예제 코드를 작성하고, 새 콘텐츠를 감지하여 알림 이메일을 보내는 방법을 설명했습니다.

더 자세한 정보는 Javamail API를 참조하시기 바랍니다.