EmailNotificationService.java
package qwerty.chaekit.service.util;
import jakarta.mail.internet.MimeMessage;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
@Slf4j
@Service
@RequiredArgsConstructor
public class EmailNotificationService {
private final JavaMailSender javaMailSender;
// 본인 인증 이메일 전송
@Async
public void sendVerificationEmail(String toEmail, String verificationCode) {
String subject = "책잇 이메일 본인 인증";
String text = "<h3>본인 인증을 위해 아래 인증코드를 입력하세요.</h3>" +
"<p>인증 코드: " + verificationCode + "</p>";
sendEmail(toEmail, subject, text);
}
// 출판사 계정 승인 이메일 전송
@Async
public void sendPublisherApprovalEmail(String toEmail) {
String subject = "출판사 계정 승인 알림";
String text = "<h3>축하합니다! 출판사 계정이 승인되었습니다.</h3>" +
"<p>이제 출판사 계정을 통해 전자책을 업로드할 수 있습니다.</p>";
sendEmail(toEmail, subject, text);
}
// 독서모임 참여 승인 이메일 전송
@Async
public void sendReadingGroupApprovalEmail(String toEmail) {
String subject = "독서모임 참여 승인 알림";
String text = "<h3>축하합니다! 독서모임 참여가 승인되었습니다.</h3>" +
"<p>모임에 참여하여 책을 함께 읽을 수 있습니다.</p>";
sendEmail(toEmail, subject, text);
}
@Async
public void sendPublisherRejectionEmail(String toEmail, String reason) {
String subject = "출판사 계정 거절 알림";
String text = "<h3>안녕하세요, 책잇입니다.</h3>" +
"<p>출판사 계정이 거절되었습니다. 다시 문의해주세요.</p>" +
"<p>거절 사유: " + reason + "</p>";
sendEmail(toEmail, subject, text);
}
@Async
public void sendEbookRejectionEmail(String toEmail, String reason) {
String subject = "전자책 등록 반려 알림";
String text = "<h3>안녕하세요, 책잇입니다.</h3>" +
"<p>전자책 등록이 거절되었습니다. 다시 문의해주세요.</p>" +
"<p>거절 사유: " + reason + "</p>";
sendEmail(toEmail, subject, text);
}
// 공통된 이메일 전송 메서드
private void sendEmail(String toEmail, String subject, String text) {
try {
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setTo(toEmail);
helper.setSubject(subject);
helper.setText(text, true); // true는 HTML 텍스트임을 의미
javaMailSender.send(message);
} catch (Exception e) {
log.warn("Failed to send email", e);
}
}
}