[Spring Boot] 이메일 전송하는 방법

2022. 5. 16. 22:41· BE/Spring
목차
  1. 1. Spring Boot에서 보내는 이메일에 사용될 계정 설정하기
  2.  
  3. 2. Spring Boot 설정
  4. * 참고 블로그
반응형

안녕하세요.

 

이번 포스팅에서는 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
  1. 1. Spring Boot에서 보내는 이메일에 사용될 계정 설정하기
  2.  
  3. 2. Spring Boot 설정
  4. * 참고 블로그
'BE/Spring' 카테고리의 다른 글
  • [Spring Security] 계정 생성, 로그인 및 권한 처리
  • [스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술] - 1일차
  • [Spring Boot] MongoDB 통신 설정
  • [Spring Boot] Jasper Reports 설정하기
멍목
멍목
개발 관련 새롭게 알게 된 지식이나 좋은 정보들을 메모하는 공간입니다.
반응형
멍목
김멍목의 개발블로그
멍목
전체
오늘
어제
  • 분류 전체보기 (514)
    • BE (190)
      • Spring (21)
      • Java (141)
      • Kotlin (6)
      • JPA (22)
    • FE (33)
      • Javascript (16)
      • Typescript (0)
      • React (5)
      • Vue.js (9)
      • JSP & JSTL (3)
    • DB (32)
      • Oracle (22)
      • MongoDB (10)
    • Algorithm (195)
    • Linux (8)
    • Git (6)
    • etc (42)
    • ---------------------------.. (0)
    • 회계 (4)
      • 전산회계 2급 (4)
    • 잡동사니 (2)

블로그 메뉴

  • 홈
  • 관리

공지사항

인기 글

태그

  • 이펙티브 자바
  • 자기개발
  • 더 자바 Java 8
  • 더 자바 애플리케이션을 테스트하는 다양한 방법
  • JPA
  • 전산회계 2급 준비
  • 코틀린
  • 자바 테스팅 프레임워크
  • java 8
  • 자기 공부
  • 알고리즘 공부
  • 자바 공부
  • 코테 공부
  • MongoDB 공부
  • 자바 개발자를 위한 코틀린 입문
  • Java to Kotlin
  • 코테공부
  • 자바공부
  • 알고리즘공부
  • MongoDB 기초부터 실무까지
  • 프로젝트로 배우는 Vue.js 3
  • Oracle
  • 자기 개발
  • 이펙티브자바
  • 자기공부
  • MongoDB with Node.js
  • vue3 공부
  • junit5
  • Effective Java
  • JPA 공부

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.0
멍목
[Spring Boot] 이메일 전송하는 방법
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.