이번에 내가 포스팅할 내용은 Spring Boot에서 SMTP를 이용해 메일을 보내는것을 만들어 보려고 한다.
나같은 경우는 서버에 에러가 생겼을때 메일을 보내주는 서비스를 만들고 싶어서 SMTP에 대해 알아보았다.
내가 진행할 순서는 아래와 같다.
1. 구글 계정에서 앱비밀번호를 알아낸다.
2. 구글 계정에서 메일 보내기 위한 설정을 적용한다.
3. Spring Boot에서 dependency를 추가 및 SMTP configuration 파일을 만들어 계정정보 등 초기설정을 설정한다.
4. 메일 전송 Class를 만든다.
그럼 이제 자세히 알아보자.
1. 구글 계정에서 앱 비밀번호를 알아낸다.
우측상단의 설정을 누른후 Googel 계정관리를 누른다.
그런 다음 보안 탭을 누르고 앱 비밀번호 탭을 누른다.
그런 다음 아래 사진과 같이 설정한 다음 생성을 누른다.
그러면 아래 사진과 같이 앱 비밀번호가 뜨는데 위 비밀번호를 메모장에 따로 옮겨둬서 간직하고 있는다.
자 이제 그럼 다 앱 비밀번호를 알았으니 구글 계정에서 메일을 보내기 위한 설정을 적용해보자.
2. 구글 계정에서 메일 보내기 위한 설정을 적용하기.
메일을 보낼 구글 메일 계정으로 메일로 들어가 톱니바퀴를 눌러 모든 설정 보기를 클릭한다.
그런다음 전달 및 POP/IMAP 탭을 누른후 모든메일에 POP 사용하기와 IMAP 사용하기를 누른다.
그리고 저장을 누른다.
그럼 이제 설정을 끝났으니 spring boot에서 설정을 마치자.
3. Spring Boot에서 dependency를 추가한다.
이제 pom.xml로 돌아가 아래와 같은 dependency를 추가해주자.
<!-- mail 전송 서비스를 위한 dependency -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
그리고 나서는 이제 메일 서비스를 사용하기 위해 이메일 정보를 등록해야한다.
나같은 경우는 따로 configuration.properties 파일을 만들어서 관리하였지만 그러고 싶지 않은 사람들은
application.properties에 적으면 된다.
configuration.properties
#SMTP config
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=이메일
spring.mail.password=1번에서 받아온 앱 비밀번호
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.auth=true
그럼 이제 세팅이 완료 됐으니 프로젝트를 다시 빌드해보자.
4. 메일 전송 Class를 만든다.
프로젝트 빌드까지 완료했으니 이제 우리는 메일을 보내주는 Class만 만들어주면 된다.
코드는 아래와 같으니 참고하면 될것같고 자세한 설명은 주석에 달아놨으니 확인해보면 될것 같다.
@Service
public class MailService {
private JavaMailSender jms;
public MailService(JavaMailSender jms) {
super();
this.jms = jms;
}
public void sendErrorMail(String message) {
ArrayList<String> toUserList = new ArrayList<>();
toUserList.add("hankgood958@gmail.com"); //메일 보낼 상대방들을 List에 담는다.
toUserList.add("hankgood95@naver.com");
int listSize = toUserList.size();
SimpleMailMessage smm = new SimpleMailMessage();
//수신자 설정
smm.setTo((String[]) toUserList.toArray(new String[listSize]));
//메일 제목 설정
smm.setSubject("API connection error Occur");
//메일 내용 설정
smm.setText(message);
jms.send(smm);
}
}
'코딩일기 > 날씨앱 만들기 프로젝트' 카테고리의 다른 글
[리눅스 / Ubuntu] Ubuntu 에 maven 설치하기 (0) | 2022.01.25 |
---|---|
[Spring Boot] Retry와 Recover 설명 및 사용법 (0) | 2022.01.25 |
[Spring Boot] RestAPI 만들기 예제 (0) | 2021.12.16 |
[RestAPI] Rest, RestAPI 설명 및 설계 규칙 (0) | 2021.12.16 |
[Spring Boot] Scheduler 설명 및 사용법 (0) | 2021.12.13 |