공공부하자개발 · 영어 학습 노트
자바
실무 확장Excel · 파일 업로드 · DB 연동0/22 완료
  • 01Excel(XLSX) 구조와 순수 JDK로 읽기/쓰기
  • 02Apache POI로 Excel 업로드/다운로드
  • 03파일 업로드/다운로드 서버 (HttpServer)
  • 04JDBC 기초와 트랜잭션 (H2)
  • 05MyBatis 어노테이션 매퍼로 쿼리 연동
  • 06MyBatis XML 매퍼 · Oracle 방언 · PageHelper · Spring Boot
  • 07REST API 서버와 JSON
  • 08Vue 3 SPA 와 Java 서버 연동
  • 09@Scheduled 운영
  • 10로깅 실무: 레벨·계층, MDC 추적, 예외·성능, 마스킹, 롤링, JSON 로그
  • 11외부 API 연동
  • 12테스트 실무
  • 13암호화·개인정보 보호
  • 14인코딩·한글 실무
  • 15@Transactional 심화
  • 16긴 작업 비동기 처리와 진행률
  • 17SFTP·FTP 파일 연계
  • 18로컬 캐시와 @Cacheable
  • 19메일·알림 발송
  • 20웹 보안 체크리스트
  • 21빌드 도구와 폐쇄망 의존성 반입
  • 22성능 측정: p50·p95·p99, 측정 계층, JFR, JMH 함정, 자체 부하 테스트, 병목 순위
사이트 소개개인정보처리방침연락처
© 2026 공부하자
홈 › 실무 확장 › 19 / 22

메일·알림 발송

SMTP 흐름, MIME·한글 제목·첨부, 실패 분류·재시도, 중복 방지, 알림 폭주 억제
섹션 7진행 0 / 22
1왜 배우는가2핵심 원리3코드 예제4응용 변형 예제5자주 하는 실수 (Tip)6연습 문제7정리‹ 이전다음 ›

5. 자주 하는 실수 (Tip)

실수 1: 4xx 와 5xx 를 구분하지 않고 똑같이 재시도한다

존재하지 않는 주소(5xx)를 계속 재시도하면 릴레이 서버에 무의미한 부하만 남깁니다. 응답 코드 첫 자리로 반드시 분기합니다.

실수 2: 재시도에 백오프가 없다

실패하자마자 즉시 재시도를 반복하면 오히려 릴레이 서버를 더 힘들게 합니다. 간격을 점점 늘리는 지수 백오프를 씁니다.

실수 3: 배치 재실행 시 중복 발송을 막지 않는다

멱등키 없이 배치를 재실행하면 이미 받은 사람이 같은 메일을 또 받습니다. 발송 전 이력 테이블 조회를 빠뜨리지 않습니다.

실수 4: 대량 발송을 요청 스레드에서 처리한다

수백 통을 동기로 보내면 사용자 화면이 그만큼 오래 멈춥니다. 큐나 별도 스레드로 넘겨야 합니다.

실수 5: 장애 알림에 폭주 억제가 없다

같은 오류가 반복 감지될 때마다 알림을 보내면 담당자가 채널을 꺼버립니다. 오류 키별로 최소 발송 간격을 둡니다.

실수 6: 대량 발송에 To 를 나열해 서로의 주소를 노출한다

받는 사람끼리 서로를 몰라야 하는 발송은 Bcc 를 씁니다. To 에 여러 명을 나열하면 개인정보 노출 사고입니다.

실수 7: 한글 제목을 인코딩 없이 그대로 보낸다

RFC 2047 인코딩 없이 한글을 그대로 헤더에 넣으면 수신 클라이언트에서 제목이 깨집니다. base64 나 quoted-printable 로 감싸야 합니다.

실수 8: 개인정보를 본문에 그대로 적는다

계좌번호·주민등록번호 전체를 메일 본문에 넣으면 메일함 자체가 유출 지점이 됩니다. 마스킹하거나 링크로 유도합니다.

자주 하는 실수 (Tip)
  • 실수 1: 4xx 와 5xx 를 구분하지 않고 똑같이 재시도한다
  • 실수 2: 재시도에 백오프가 없다
  • 실수 3: 배치 재실행 시 중복 발송을 막지 않는다
  • 실수 4: 대량 발송을 요청 스레드에서 처리한다
  • 실수 5: 장애 알림에 폭주 억제가 없다
  • 실수 6: 대량 발송에 To 를 나열해 서로의 주소를 노출한다
  • 실수 7: 한글 제목을 인코딩 없이 그대로 보낸다
  • 실수 8: 개인정보를 본문에 그대로 적는다
이전 섹션4 응용 변형 예제5 / 7다음 섹션6 연습 문제