제보(영어 콜드메일 하단 한국어 발신자/수신거부) → 코드·beta DB 교차 분석 → 근본 원인 → 영어 고정 수정 → alpha·beta 머지 전 과정 기록.
i18n.language=ko)를 서버에 넘겼고, 서버가 그대로 한국어 footer를 렌더했습니다.
aeroway 영업 메일 하단에 영어 본문과 어울리지 않는 한국어 고지가 붙어 “해외 바이어에게 괜찮은가” 검토 요청이 들어왔습니다.
발신자: 박준영, 유성구 대학로 99, 503호, 대전광역시, KR / 이 이메일은 B2B 비즈니스 제안을 위해… / 수신거부 | 내 데이터 관리정적 분석만으론 “코드상 영어가 나와야 하는데 한국어”라는 모순이 생겨, beta DB 실데이터로 발송 경로를 특정했습니다.
input.locale로 분기.DEFAULT_LANGUAGE="en").complianceLocale을 안 넘김 → 코드상 영어가 맞음. 모순 발생.[테스트] ActUEarn…, 발신=수신=aeroway@hi.rinda.ai. 실발송이 아니라 테스트 발송으로 확정.buildComplianceFooter(locale:"ko").| 항목 | 커밋(PR) | 작성자 | 날짜 |
|---|---|---|---|
| Compliance footer 자체 도입(다국어 LABELS) | 69ba8eb43 (#7601) | Gyudong Kim | 2026-05-19 |
미리보기·테스트 발송에 complianceLocale 배선 + 프론트가 UI 언어 전송 ← 누수 시작점 | f7c59543b (#7775) | lsuminl | 2026-05-21 |
미·EU·한·일 어느 법도 footer를 특정 언어로 규정하지 않고 모두 “수신자가 이해 가능한 clear & conspicuous 고지”를 요구합니다. 영어 본문을 받는 수신자에게 가장 이해 가능한 언어는 영어 → 발송자 모국어(한국어) 고정은 법적 실익 0, 리스크만 증가. 실데이터상 콜드 아웃리치 본문 수신거부 블록은 이미 영어 고정이라, 컴플라이언스 footer도 영어로 맞추는 것이 일관됩니다. (정책 선택: “영어 완전 고정”)
발송 경계(서버)에서 영어로 강제 → 어떤 caller(테스트 발송/미래 경로)도 우회 불가한 단일 기준(SSOT).
// elysia-server/src/services/email.service.ts (buildComplianceFooter 호출) pendingComplianceFooter = buildComplianceFooter({ workspace: workspaceCtx, unsubscribeUrl, dsarUrl, - locale: normalizeLocale(data.complianceLocale), + // 컴플라이언스 풋터는 영어로 고정. 본문(영어)↔풋터 언어 일치로 + // CAN-SPAM "clear & conspicuous" 충족. caller 의 complianceLocale + // (테스트 발송의 UI 언어 등)은 의도적으로 무시. + locale: "en", recipient: { outreachSourceLabel }, })
normalizeLocale import 제거complianceLocale 필드 JSDoc을 “무시됨” 명시로 갱신(필드는 호환 위해 유지)buildComplianceFooter 자체·다국어 LABELS는 미변경 — 향후 “발송 언어 종속” 전환 시 재사용| 검증 | 결과 |
|---|---|
| type-check (tsgo) | PASS (0) |
| 번들 빌드 | PASS |
| email-footer 단위 테스트 | 18 pass / 0 fail |
| lint (email.service.ts) | clean |
| 브랜치 | PR | 커밋 |
|---|---|---|
| alpha | #9228 | 4523aed2d |
| beta (alpha 체리픽, drift 없음) | #9229 | b70e20875 |
부수 처리: CI의 biome auto-fix가 무관 파일(auto-add-buyer…)의 s!→s?를 바꿔 타입에러를 유발 → 그 파일은 원복하여 email.service.ts 단일 변경으로 깨끗하게 머지.
getSimpleUnsubscribeFooter, 영어·주소 없음)은 그대로이고, 발신자 주소를 담은 buildComplianceFooter는 실발송에 0.17%만 붙습니다. 언어가 아니라 footer 통합·주소 주입 문제 — 근본 원인 규명 후 별도 PR 권장.