[java] Javamail을 사용하여 이메일에 다시 보내기 추가하기
이전에 작성한 이메일 발송 코드에 다시 보내기 기능을 추가하고 싶다면 Javamail을 사용하여 쉽게 구현할 수 있습니다. Javamail은 Java에서 이메일을 보내는 데 사용되는 라이브러리입니다.
Javamail 라이브러리 추가하기
먼저 프로젝트에 Javamail 라이브러리를 추가해야 합니다. Maven을 사용하는 경우 pom.xml
파일에 다음 의존성을 추가합니다:
<dependency>
<groupId>javax.mail</groupId>
<artifactId>javax.mail-api</artifactId>
<version>1.6.2</version>
</dependency>
Gradle을 사용하는 경우 build.gradle
파일에 다음 의존성을 추가합니다:
implementation 'javax.mail:javax.mail-api:1.6.2'
의존성을 추가한 후에는 프로젝트를 다시 빌드해야 합니다.
다시 보내기 기능 추가하기
이제 이메일을 다시 보내기 위한 코드를 작성해보겠습니다. 다음은 보내는 이메일의 정보와 메서드를 받아서 이메일을 다시 보내는 코드입니다:
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class EmailUtils {
private static final String SMTP_HOST = "SMTP_SERVER_HOSTNAME";
private static final int SMTP_PORT = 587;
private static final String SMTP_USERNAME = "YOUR_USERNAME";
private static final String SMTP_PASSWORD = "YOUR_PASSWORD";
public static void sendEmail(String recipient, String subject, String body) throws MessagingException {
Session session = createSession();
Message message = createMessage(session, recipient, subject, body);
Transport.send(message);
}
public static void resendEmail(String recipient, String subject, String body) throws MessagingException {
Session session = createSession();
Message message = createMessage(session, recipient, subject, body);
message.setFrom(new InternetAddress(SMTP_USERNAME));
Transport.send(message);
}
private static Session createSession() {
Properties props = new Properties();
props.put("mail.smtp.host", SMTP_HOST);
props.put("mail.smtp.port", SMTP_PORT);
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
Authenticator authenticator = new Authenticator() {
private PasswordAuthentication authentication = new PasswordAuthentication(SMTP_USERNAME, SMTP_PASSWORD);
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return authentication;
}
};
return Session.getInstance(props, authenticator);
}
private static Message createMessage(Session session, String recipient, String subject, String body) throws MessagingException {
Message message = new MimeMessage(session);
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipient));
message.setSubject(subject);
message.setText(body);
return message;
}
}
sendEmail
메서드는 이전에 작성한 이메일을 보내는 메서드입니다. resendEmail
메서드는 이전에 작성한 이메일을 받아서 발신인 주소를 설정한 후 다시 보내는 메서드입니다.
이메일 다시 보내기
이제 다시 보내기를 원하는 부분에서 resendEmail
메서드를 호출하여 이메일을 다시 보낼 수 있습니다. 예를 들어 다음과 같이 사용합니다:
try {
String recipient = "recipient@example.com";
String subject = "이메일 제목";
String body = "이메일 내용";
EmailUtils.resendEmail(recipient, subject, body);
System.out.println("이메일 다시 보내기 성공");
} catch (MessagingException e) {
System.out.println("이메일 다시 보내기 실패: " + e.getMessage());
}
이제 Javamail을 사용하여 이메일에 다시 보내기 기능을 쉽게 추가할 수 있습니다. Javamail 라이브러리를 프로젝트에 추가하고, resendEmail
메서드를 사용하여 이메일을 다시 보내면 됩니다.