diff --git a/src/main/java/dmu/dasom/api/domain/email/config/EmailConfig.java b/src/main/java/dmu/dasom/api/domain/email/config/EmailConfig.java new file mode 100644 index 0000000..8512643 --- /dev/null +++ b/src/main/java/dmu/dasom/api/domain/email/config/EmailConfig.java @@ -0,0 +1,35 @@ +package dmu.dasom.api.domain.email.config; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.mail.javamail.JavaMailSender; +import org.springframework.mail.javamail.JavaMailSenderImpl; + +import java.util.Properties; + +@Configuration +public class EmailConfig { + + @Value("${spring.mail.username}") + private String username; + @Value("${spring.mail.password}") + private String password; + + @Bean + public JavaMailSender javaMailSender() { + JavaMailSenderImpl mailSender = new JavaMailSenderImpl(); + mailSender.setHost("smtp.gmail.com"); + mailSender.setPort(587); + mailSender.setUsername(username); + mailSender.setPassword(password); + + Properties props = mailSender.getJavaMailProperties(); + props.put("mail.transport.protocol", "smtp"); + props.put("mail.smtp.auth", "true"); + props.put("mail.smtp.starttls.enable", "true"); + props.put("mail.debug", "true"); + + return mailSender; + } +} diff --git a/src/main/java/dmu/dasom/api/domain/email/service/EmailService.java b/src/main/java/dmu/dasom/api/domain/email/service/EmailService.java index 7318fb2..2dc9acf 100644 --- a/src/main/java/dmu/dasom/api/domain/email/service/EmailService.java +++ b/src/main/java/dmu/dasom/api/domain/email/service/EmailService.java @@ -17,8 +17,9 @@ @Service public class EmailService { - private JavaMailSender javaMailSender; - private TemplateEngine templateEngine; + private final TemplateEngine templateEngine; + private final JavaMailSender javaMailSender; + @Value("${spring.mail.username}") private String from; @@ -26,24 +27,26 @@ public void sendEmail(String to, String name, MailType mailType) throws Messagin if (mailType == null){ throw new CustomException(ErrorCode.MAIL_TYPE_NOT_VALID); } + // 메일 제목 및 템플릿 설정 String subject; String emailContent; - String buttonUrl = "#"; + String buttonUrl = "https://dmu-dasom.or.kr/recruit/result"; String buttonText; + switch (mailType) { case DOCUMENT_RESULT -> { subject = "동양미래대학교 컴퓨터소프트웨어공학과 전공 동아리 DASOM 서류 결과 안내"; - emailContent = "먼저 다솜 34기에 많은 관심을 갖고 지원해 주셔서 감사드리며," + - "내부 서류 평가 결과 및 추후 일정에 관해 안내드리고자 이메일을 발송하게 되었습니다." + - "모집 폼 합/불합 결과는 아래 버튼 혹은 홈페이지를 통해 확인이 가능합니다."; + emailContent = "먼저 다솜 34기에 많은 관심을 두고 지원해 주셔서 감사드리며," + + "내부 서류 평가 결과 및 추후 일정에 관해 안내해드리고자 이메일을 발송하게 되었습니다." + + "서류 전형 결과는 아래 버튼 혹은 홈페이지를 통해 확인이 가능합니다."; buttonText = "서류 결과 확인하기"; } case FINAL_RESULT -> { - subject = "동양미래대학교 컴퓨터소프트웨어공학과 전공 동아리 DASOM 최종 합격 안내"; - emailContent = "먼저 다솜 34기에 많은 관심을 갖고 지원해 주셔서 감사드리며," + - "최종 면접 결과 및 추후 일정에 관해 안내드리고자 이메일을 발송하게 되었습니다." + - "모집 폼 합/불합 결과는 아래 버튼 혹은 홈페이지를 통해 확인이 가능합니다."; + subject = "동양미래대학교 컴퓨터소프트웨어공학과 전공 동아리 DASOM 최종 면접 결과 안내"; + emailContent = "먼저 다솜 34기에 많은 관심을 두고 지원해 주셔서 감사드리며," + + "최종 면접 결과 및 추후 일정에 관해 안내해드리고자 이메일을 발송하게 되었습니다." + + "최종 면접 결과는 아래 버튼 혹은 홈페이지를 통해 확인이 가능합니다."; buttonText = "최종 결과 확인하기"; } default -> throw new IllegalStateException("Unexpected value: " + mailType); @@ -66,7 +69,10 @@ public void sendEmail(String to, String name, MailType mailType) throws Messagin helper.setTo(to); helper.setSubject(subject); helper.setText(htmlBody, true); - helper.setFrom(from); + helper.setFrom((from != null && !from.isEmpty()) ? from : "dasomdmu@gmail.com"); + + // Content-Type을 명시적으로 설정 + message.setContent(htmlBody, "text/html; charset=utf-8"); javaMailSender.send(message); } diff --git a/src/main/java/dmu/dasom/api/global/admin/controller/AdminController.java b/src/main/java/dmu/dasom/api/global/admin/controller/AdminController.java index 646620e..659d570 100644 --- a/src/main/java/dmu/dasom/api/global/admin/controller/AdminController.java +++ b/src/main/java/dmu/dasom/api/global/admin/controller/AdminController.java @@ -153,7 +153,7 @@ public ResponseEntity modifyRecruitSchedule(@Valid @RequestBody final Recr public ResponseEntity sendEmailsToApplicants( @RequestParam @Parameter(description = "메일 발송 타입", examples = { - @ExampleObject(name = "서류 합격 메일", value = "DOCUMENT_PASS"), + @ExampleObject(name = "서류 합격 메일", value = "DOCUMENT_RESULT"), @ExampleObject(name = "최종 결과 메일", value = "FINAL_RESULT") }) MailType mailType ) { diff --git a/src/main/resources/template/email-template.html b/src/main/resources/templates/email-template.html similarity index 51% rename from src/main/resources/template/email-template.html rename to src/main/resources/templates/email-template.html index 9d94420..89465a3 100644 --- a/src/main/resources/template/email-template.html +++ b/src/main/resources/templates/email-template.html @@ -3,139 +3,119 @@ + + 이메일 안내 - - - - - - - - - - - - - - DASOM - - 컴퓨터공학부 전공동아리 다솜입니다. - - - - - - + margin-left: 10px;"> + - + 또한, 문의 사항은 본 메일에 회신 또는 아래 번호로 편하게 연락 부탁드립니다. 010-6361-3481 -