지난 시간 UI를 제작하고 식당메뉴 api까지 만들었다. 이번에 진행한 작업은 문의사항 내용을 form양식에 작성하면 담당자 e-mail로 실제 전송되는 기능을 구현하는 것이다. 내용이 간결하여 빠르게 설명하겠다.
- 화면은 위와 같은데 아이콘은 가볍게 무시해주길...암튼 저렇게 문의 사항에 관련된 간단한 메일을 작성해서 send를 누르면 ajax를 통해 back으로 위와 같은 데이터를 전송한다.
pom.xml
- 일단 메일 기능을 구현하기 위해 필요한 spring-boot-starter-mail을 pom.xml에 추가해준다.
이후 controller, vo, service 등을 생성하였고, 메일 전송에 관련된 내용은 service에 구현하였다.
controller
- front에서 보내준 파라미터(클라이언트가 작성한 내용)를 vo에 담아주고, 해당 기능을 처리할 service를 호출한다.
service
이번 메일 전송기능은 JavaMailSender 을 사용하였다. 특징은 간단히 다음과 같다.
- 메일 발송 기능을 위한 MailSender 인터페이스 제공
- SimpleMailMessage(메일 제목, 단순 텍스트 내용)를 전달받아 메일을 발송하는 기능을 정의
- 코드 순서대로 설명하자면 메일 기능을 수행할 JavaMailSender를 호출해주었다.
- 이후 FROM_ADDRESS 라는 고정된 수신자(담당자) 이메일을 지정하였다.
- SimpleMailMessage를 message로 정의한 뒤 vo에 지정한 파라미터 값들을 담아주었다(중간에 messagejsetSubject와 message.setText 부분은 내가 임의대로 추가하였다.)
- 이후 mailSender.send()를 통해 해당 최종 메일 전송을 수행한다.
메일 도착~~으로 끝나는 것이 아니다. 해당 기능을 구현하기 위해서는 두가지 추가 설정이 필요하다. 그 내용은 아래와 같다.
- src/main/resources의 application.poperties에 위와 같은 설정을 추가한다. 메일 전송을 위한 smtp 서버 관련 내용 및 계정 등..
- 네이버메일 - 환경설정 내부에서의 설정을 위와 같이 맞춰준다.
이렇게 메일 전송 구현에 포스팅을 마치겠다. 메일 정리 좀 해야겠다😒