From 2bd31eabf0df00b4cc260adb1ff61c4237479492 Mon Sep 17 00:00:00 2001 From: Rinjae Date: Fri, 7 Aug 2026 13:15:18 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9D=B4=EB=A9=94=EC=9D=BC=20=EC=88=98?= =?UTF-8?q?=EC=8B=A0=EC=9E=90=EB=AA=85=20=EC=B2=98=EB=A6=AC=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20=EC=B6=94=EA=B0=80=20-=20resolveEmailUsername=20?= =?UTF-8?q?=EB=A9=94=EC=84=9C=EB=93=9C=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../template/service/MessageSendService.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) 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)가 먼저 넣은 값이 있으면 그대로 둔다(오버라이드).