[TaskAgile] 03. 스프링 시큐리티 - 02. 이메일 보내기
2020. 11. 30. 16:45ㆍ개발 관련/TaskAgile
이전 페이지 : zena1010.tistory.com/13
다음 페이지 :
스프링 시큐리티 - 이메일 보내기
목표
- 웹 어플리케이션 보호
- 이메일 보내기
- end-to-end 통합 테스트 수행
- 자바 단위 테스트 범위 리포트(coverage report) 추가
구현
- pom.xml에 추가
<dependencies>
...
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
...
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
</dependency>
...
starter-boot-starter-mail : JavaMailSender와 같은 인터페이스 제공
freeamarker 라이브러리 존재로 인해 스프링 부트는 자동으로 freemarker.template.Configuration 인스턴스 생성
일반적으로 템플릿 로더의 경로는 classpath:/templates/이며 이 경로는 타임리프 뷰 템플릿을 저장하는데도 사용된다.
- FreeMarker 로더의 경로를 변경(application.properties에 추가)
# email
spring.freemarker.template-loader-path=classpath:/mail-templates/
- SMTP 서버 시작 명렁어, application이 전송한 이메일 메시지를 확인할 수 있는 SMTP 서버(정확히 파이썬 표준 LIBRARY인 DebuggingServer 구현체인 smtpd가 필요)
- 서버의 호스트는 localhost이고 1025 포트를 리스닝한다.
// SMTP 서버 시작
$ python -m smtpd -n -C DebuggingServer localhost:1025
If localhost is not given then `localhost' is used,
and if localport is not given then 8025 is used.
If remotehost is not given then `localhost' is used,
and if remoteport is not given, then 25 is used.
localhost가 주어지지 않으면 `localhost`가 사용되고,
localport가 주어지지 않으면 8025번이 사용됩니다.
remotehost가 주어지지 않으면 `localhost`가 사용되고
remoteport가 주어지지 않으면 25번이 사용됩니다.
클래스
- DefaultMailManager
- 템플릿으로부터 메시지 바디를 생성하는데 FreeMarkerTemplateUtils 사용
- 메세지 전송하는데 메일 서버 API Mailer(구현체 : AsyncMailer - JavaMailSender 이용) 이용
- AsyncMailer : 메세지를 비동기로 전송. JavaMailSendor에 의존
- ApplicationProperties : 프로퍼티를 명시하기 위한 환경설정 클래스(메타데이터를 이용)
발생한 에러 목록
zena1010.tistory.com/61- .NoUniqueBeanDefinitionException, import한 패키지와 같은 이름일 때
'개발 관련 > TaskAgile' 카테고리의 다른 글
[TaskAgile] DB table/column 추가 (0) | 2021.01.06 |
---|---|
[TaskAgile] 02. 회원가입 구현 (0) | 2020.11.26 |