반응형
안녕하세요.
이번 포스팅에서는 Spring Boot에서 간단한 이메일을 보내는 방법에 대해 공유해드리려고 합니다.
총 두 가지 챕터(이메일 계정 설정, Spring Boot 설정)이 있습니다.
1. Spring Boot에서 보내는 이메일에 사용될 계정 설정하기
이메일을 전송하려면 보내는 이메일이 있어야겠죠?
보내는 이메일로 사용될 계정 설정은 아래와 같습니다.
(필자는 구글 계정을 예시로 들겠습니다.)
1) 보내는 이메일로 사용될 구글 아이디로 로그인 후 '구글 계정 관리' 에서 보안 탭의 '앱 비밀번호' 클릭
* 앱 비밀번호는 앱 비밀번호 바로 위에 있는 2단계 인증을 사용해야 사용 가능합니다.
2) 앱 비밀번호를 메일 / Windows 컴퓨터로 설정 후 생성 버튼 클릭
3) 생성된 앱 비밀번호는 Spring Boot의 smtp 계정 설정에서 사용될 예정입니다.
4) Gmail로 이동 후 우측 상단의 톱니바퀴 모양을 클릭하여 '모든 설정 보기'로 이동
5) '전달 및 POP/IMAP' 메뉴로 이동
(1) POP 다운로드에서 상태를 모든 메일에 POP 사용하기 설정
(2) IMAP 액세스에서 IMAP 사용 설정
후 변경사항 저장
2. Spring Boot 설정
1) pom.xml에서 아래의 dependency를 추가
<dependencies>
...
<!-- SpringBoot mailService -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
...
<dependencies>
2) application.properties 에서 SMTP 설정 추가
...
# Mail Setting
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=구글_아이디
spring.mail.password=위에서_입력받은_앱비밀번호
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.auth=true
3) Java 단에서 아래처럼 예제 소스를 작성한 후 호출 시 메일 전송
(1) SimpleMailMessage를 이용한 방법
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
...
public void sendMail(){
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
try{
// 1. 메일 수신자 설정
String[] receiveList = {"test@naver.com", "test@gmail.com");
// ArrayLis의 경우 배열로 변환이 필요함
/*
ArrayList<String> receiveList = new ArrayList<>();
receiveList.add("test@naver.com");
receiveList.add("test@gmail.com");
String[] receiveList = (String[]) receiveList.toArray(new String[receiveList.size()]);
*/
simpleMailMessage.setTo(receiveList);
// 2. 메일 제목 설정
simpleMailMessage.setSubject("test_title");
// 3. 메일 내용 설정
simpleMailMessage.setText("test_content");
// 4. 메일 전송
javaMailSender.send(simpleMailMessage);
} catch(Exception e){
logger.info(e.toString());
}
}
(2) SimpleMailMessage를 이용한 방법 (HTML이 적용되어 메일 본문에 포함됨)
import org.springframework.mail.javamail.MimeMessageHelper;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import org.springframework.mail.javamail.JavaMailSender;
public void sendMail(){
MimeMessage message = javaMailSender.createMimeMessage();
try{
MimeMessageHelper messageHelper = new MimeMessageHelper(message, true, "UTF-8");
// 1. 메일 수신자 설정
String[] receiveList = {"test@naver.com", "test@gmail.com");
messageHelper.setTo(receiveArr);
// 2. 메일 제목 설정
messageHelper.setSubject("test_subject");
// 3. 메일 내용 설정
// HTML 적용됨
String content = "테스트. <b>테스트</b>"
messageHelper.setText(content,true);
// 4. 메일 전송
javaMailSender.send(message);
} catch(Exception e){
logger.info(e.toString());
}
}
3) 메일 확인
SimpleMailMessage 예시
* 참고 블로그
https://kitty-geno.tistory.com/43
https://aamoos.tistory.com/501
반응형
'BE > Spring' 카테고리의 다른 글
[Spring Security] 계정 생성, 로그인 및 권한 처리 (0) | 2022.05.30 |
---|---|
[스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술] - 1일차 (0) | 2022.05.29 |
[Spring Boot] MongoDB 통신 설정 (0) | 2022.05.14 |
[Spring Boot] Jasper Reports 설정하기 (0) | 2022.05.13 |
[Spring Boot] LogBack 설정 (0) | 2022.05.11 |