22
33import java .util .concurrent .CompletableFuture ;
44
5+ import org .springframework .beans .factory .annotation .Value ;
56import org .springframework .mail .javamail .JavaMailSender ;
67import org .springframework .mail .javamail .MimeMessageHelper ;
78import org .springframework .retry .annotation .Recover ;
2425@ RequiredArgsConstructor
2526@ Slf4j
2627public class EmailService {
28+
29+ @ Value ("${spring.profiles.active:dev}" )
30+ private String activeProfile ;
31+
2732 private static final String FROM_ADDRESS = "noreply@algohub.kr" ;
28- private static final String EMAIL_VERIFICATION_CLIENT_ENDPOINT = "https://algohub.kr/signup" ;
29- private static final String RESET_PASSWORD_CLIENT_ENDPOINT = "https://algohub.kr/reset-password" ;
3033 private final JavaMailSender mailSender ;
3134 private final TemplateEngine templateEngine ;
3235
@@ -51,7 +54,6 @@ private void sendMail(String recipient, EmailType type, String content) {
5154 try {
5255 MimeMessage message = mailSender .createMimeMessage ();
5356 MimeMessageHelper helper = new MimeMessageHelper (message , true , "UTF-8" );
54-
5557 helper .setTo (recipient );
5658 helper .setFrom (FROM_ADDRESS );
5759 helper .setSubject (getEmailSubject (type ));
@@ -76,19 +78,21 @@ private String getEmailContent(EmailType type, String token) {
7678 switch (type ) {
7779 case RESET_PASSWORD : {
7880 Context context = new Context ();
81+ String clientEndpoint = getClientEndpoint ("reset-password" );
7982 context .setVariable ("title" , EmailTemplateStrings .RESET_PASSWORD_TITLE );
8083 context .setVariable ("content" , EmailTemplateStrings .RESET_PASSWORD_CONTENT );
8184 context .setVariable ("button" , EmailTemplateStrings .RESET_PASSWORD_BUTTON );
82- context .setVariable ("url" , RESET_PASSWORD_CLIENT_ENDPOINT + "?token=" + token );
85+ context .setVariable ("url" , clientEndpoint + "?token=" + token );
8386 return templateEngine .process ("email-template" , context );
8487 }
8588
8689 case EMAIL_VALIDATION :
8790 Context context = new Context ();
91+ String clientEndpoint = getClientEndpoint ("signup" );
8892 context .setVariable ("title" , EmailTemplateStrings .EMAIL_VALIDATION_TITLE );
8993 context .setVariable ("content" , EmailTemplateStrings .EMAIL_VALIDATION_CONTENT );
9094 context .setVariable ("button" , EmailTemplateStrings .EMAIL_VALIDATION_BUTTON );
91- context .setVariable ("url" , EMAIL_VERIFICATION_CLIENT_ENDPOINT + "?token=" + token );
95+ context .setVariable ("url" , clientEndpoint + "?token=" + token );
9296 return templateEngine .process ("email-template" , context );
9397 default :
9498 throw new IllegalArgumentException ("LOGIC ERROR : Unreachable code block" );
@@ -102,4 +106,14 @@ private String getEmailSubject(EmailType type) {
102106 default -> throw new IllegalArgumentException ("LOGIC ERROR : Unreachable code block" );
103107 };
104108 }
109+
110+ private String getClientEndpoint (String apiType ) {
111+
112+ if ("prod" .equals (activeProfile )) {
113+ return ("https://algohub.kr/" + apiType );
114+ } else {
115+ return ("https://rc.algohub.kr/" + apiType );
116+ }
117+
118+ }
105119}
0 commit comments