[java] Javamail을 사용하여 이메일에 특정 시간에 예약되는 작업 추가하기
이메일 기능은 많은 애플리케이션에서 중요한 역할을 합니다. 이메일을 보내기 위해 Javamail API를 사용할 수 있으며, 이를 통해 특정 시간에 예약되는 작업을 이메일로 보낼 수 있습니다. 이번 기사에서는 Javamail을 사용하여 이메일에 예약 작업을 추가하는 방법을 소개하겠습니다.
Javamail 라이브러리 추가하기
먼저, 프로젝트의 의존성에 Javamail 라이브러리를 추가해야 합니다. Maven을 사용한다면 pom.xml
파일에 다음과 같이 의존성을 추가할 수 있습니다:
<dependencies>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
</dependencies>
Gradle을 사용한다면 build.gradle
파일에 다음과 같이 의존성을 추가할 수 있습니다:
dependency {
implementation 'javax.mail:mail:1.4.7'
}
이메일 작업 예약하기
이제 Javamail을 사용하여 이메일을 예약하는 작업을 만들어보겠습니다. 아래의 예제 코드는 특정 시간에 예약된 이메일 작업을 실행하는 방법을 보여줍니다.
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
public class EmailScheduler {
public static void main(String[] args) {
// 예약할 시간 설정 (현재 시간 기준으로 10분 후로 설정)
Calendar scheduledTime = Calendar.getInstance();
scheduledTime.add(Calendar.MINUTE, 10);
// 예약 작업 생성
TimerTask emailTask = new TimerTask() {
@Override
public void run() {
try {
sendEmail();
} catch (MessagingException e) {
e.printStackTrace();
}
}
};
// 작업 예약
Timer timer = new Timer();
timer.schedule(emailTask, scheduledTime.getTime());
}
private static void sendEmail() throws MessagingException {
// 이메일 설정
String to = "recipient@example.com";
String from = "sender@example.com";
String subject = "예약된 이메일 작업";
String content = "안녕하세요, 예약된 이메일 작업입니다.";
// SMTP 서버 설정
Properties properties = System.getProperties();
properties.setProperty("mail.smtp.host", "smtp.example.com");
properties.setProperty("mail.smtp.port", "587");
properties.setProperty("mail.smtp.auth", "true");
properties.setProperty("mail.smtp.starttls.enable", "true");
// 계정 정보 설정
final String username = "your_username";
final String password = "your_password";
// 세션 생성
Session session = Session.getDefaultInstance(properties, new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
// 이메일 작성
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject(subject);
message.setContent(content, "text/html; charset=UTF-8");
// 이메일 전송
Transport.send(message);
}
}
위의 예제 코드에서는 Timer
클래스를 사용하여 작업을 예약하고, TimerTask
클래스를 사용하여 예약 작업을 정의합니다. TimerTask
의 run
메서드에서는 sendEmail
메서드를 호출하여 이메일을 보냅니다. sendEmail
메서드에서는 Javamail을 사용하여 이메일을 설정하고 전송합니다. 이메일 서버 설정과 계정 정보는 각자의 환경에 맞게 수정해야 합니다.
결론
Javamail API를 사용하여 이메일에 예약 작업을 추가하는 방법을 알아보았습니다. 위의 예제 코드를 참고하여 프로젝트에 적용해보세요. 이를 통해 애플리케이션에서 필요한 시간에 자동으로 이메일을 보낼 수 있습니다.