diff --git a/src/main/java/com/eactive/apim/portal/template/service/MessageSendService.java b/src/main/java/com/eactive/apim/portal/template/service/MessageSendService.java index a2f2ede..dcc87dc 100644 --- a/src/main/java/com/eactive/apim/portal/template/service/MessageSendService.java +++ b/src/main/java/com/eactive/apim/portal/template/service/MessageSendService.java @@ -103,7 +103,7 @@ public class MessageSendService { String emailMessage = buildMessage(template.getEmailTemplate(), messageParams); emailRequest.setMessage(emailMessage); emailRequest.setRequestDate(LocalDateTime.now()); - emailRequest.setUsername(user.getUsername()); + emailRequest.setUsername(resolveEmailUsername(user)); emailRequest.setEmail(user.getUserId()); emailRequest.setEaiInterfaceId(mailEaiInterfaceId); emailRequest.setServiceId(portalProperties.get("djb.ums.email.tx_id")); @@ -132,6 +132,22 @@ public class MessageSendService { } } + /** + * PTL_MESSAGE_REQUEST.USERNAME 에 넣을 이메일 수신자명을 결정한다. + * 이메일 발송은 수신 주소(userId)의 '@' 앞 아이디 부분을 사용하고, + * 주소 형식이 아니면 기존 수신자 이름을 그대로 쓴다. + */ + private String resolveEmailUsername(MessageRecipient user) { + String address = user.getUserId(); + if (StringUtils.hasText(address)) { + int atIndex = address.indexOf('@'); + if (atIndex > 0) { + return address.substring(0, atIndex); + } + } + return user.getUsername(); + } + private void updateMessageParams(MessageRecipient user, Map messageParams) { // 공통 자동주입. 대문자 별칭(USER_ID/USER_NAME)은 DB 템플릿 변수 표기와 맞춘다. // putIfAbsent 이므로 개별 이벤트(createEvent)가 먼저 넣은 값이 있으면 그대로 둔다(오버라이드).