11package com .back .domain .user .service ;
22
3+ import jakarta .mail .MessagingException ;
4+ import jakarta .mail .internet .MimeMessage ;
35import lombok .RequiredArgsConstructor ;
46import org .springframework .beans .factory .annotation .Value ;
57import org .springframework .mail .SimpleMailMessage ;
68import org .springframework .mail .javamail .JavaMailSender ;
9+ import org .springframework .mail .javamail .MimeMessageHelper ;
710import org .springframework .stereotype .Service ;
811
12+ // 이메일 전송 서비스
913@ Service
1014@ RequiredArgsConstructor
1115public class EmailService {
@@ -17,29 +21,41 @@ public class EmailService {
1721 @ Value ("${frontend.base-url}" )
1822 private String FRONTEND_BASE_URL ;
1923
24+ // 이메일 인증 메일 전송
2025 public void sendVerificationEmail (String toEmail , String token ) {
2126 String subject = "[Catfe] 이메일 인증 안내" ;
2227 String verificationUrl = FRONTEND_BASE_URL + "/verify-email?token=" + token ;
2328
24- String text = """
25- 안녕하세요, Catfe에 가입해 주셔서 감사합니다.
26-
27- 아래 링크를 클릭하여 이메일 인증을 완료해주세요:
28- %s
29-
30- 이 링크는 24시간 동안만 유효합니다.
29+ String htmlContent = """
30+ <p>안녕하세요, Catfe에 가입해 주셔서 감사합니다.</p>
31+ <p>아래 버튼을 클릭하여 이메일 인증을 완료해주세요.</p>
32+ <br>
33+ <p>
34+ <a href="%s" style="display:inline-block;padding:10px 20px;
35+ background-color:#4CAF50;color:#fff;text-decoration:none;
36+ border-radius:5px;">이메일 인증하기</a>
37+ </p>
38+ <br>
39+ <p>이 링크는 24시간 동안만 유효합니다.</p>
3140 """ .formatted (verificationUrl );
3241
33- sendEmail (toEmail , subject , text );
42+ sendHtmlEmail (toEmail , subject , htmlContent );
3443 }
3544
36- private void sendEmail (String toEmail , String subject , String text ) {
37- SimpleMailMessage message = new SimpleMailMessage ();
38- message .setFrom (FROM_ADDRESS );
39- message .setTo (toEmail );
40- message .setSubject (subject );
41- message .setText (text );
42-
43- mailSender .send (message );
45+ // HTML 이메일 전송 공통 메서드
46+ private void sendHtmlEmail (String toEmail , String subject , String htmlContent ) {
47+ try {
48+ MimeMessage message = mailSender .createMimeMessage ();
49+ MimeMessageHelper helper = new MimeMessageHelper (message , true , "UTF-8" );
50+
51+ helper .setFrom (FROM_ADDRESS );
52+ helper .setTo (toEmail );
53+ helper .setSubject (subject );
54+ helper .setText (htmlContent , true ); // true → HTML 모드
55+
56+ mailSender .send (message );
57+ } catch (MessagingException e ) {
58+ throw new RuntimeException ("이메일 전송 실패" , e );
59+ }
4460 }
45- }
61+ }
0 commit comments