[Spring] 이메일 전송

yeonjoo913·2023년 6월 15일
0

Spring

목록 보기
2/19

spring에서 제공하는 라이브러리를 사용하여 메일 전송을 해보려고 한다.

기본적인 용어

  • SMTP : Simple Mail Transfer Protocol
    인터넷상에서 메일을 보낼 때 사용하는 프로토콜

  • POP3 : Post Office Protocol3
    사용자의 메일을 내PC로 가져올때 사용하는 프로토콜

이메일 발송 방식

  1. SimpleMailMessage
    • 간단하게 전송
  2. MimeMessage
    • html으로 작성된 것들을 전송하거나,파일을 전송할 때 사용

의존성

implementation 'org.springframework.boot:spring-boot-starter-mail'
implementation 'javax.mail:mail:1.4'

smtp 설정

  • springboot를 사용하면 javasender bean을 생성할 필요없이 자동으로 생성된다.그래서 properties에 smtp설정만 해주면 된다.
spring:
  mail:
    host: smtp.gmail.com # 1
    port: 587 # 2
    username: ${mail.username} # 3
    password: ${mail.password} # 4
    properties:
      mail:
        smtp:
          auth: true # 5
          timeout: 5000 # 6
          starttls:
            enable: false # 7
  1. SMTP 서버 호스트
  2. SMTP 서버 포트
  3. SMTP 서버 로그인 아이디: 발신자 (이메일이 test@gmail.com 이면 test가 해당)
  4. SMTP 서버 로그인 패스워드: 앱 비밀번호
  5. 사용자 인증 시도 여부 (기본값 : false)
  6. Socket Read Timeout 시간(ms) (기본값 : 무한대)
  7. StartTLS 활성화 여부 (기본값 : false)

메일 전송시 필수값

  • setTo
  • setSubject
  • setText
  • setFrom

코드 예시

@Transactional
public void sendMail(String userEmail){
    MimeMessage message=javaMailSender.createMimeMessage();
    try{
        MimeMessageHelper messageHelper=new MimeMessageHelper(message,true,HIF-8");

        messageHelper.setFrom(new InternetAddress(address,MimeUtility.encodeText(text:"text"china"UTF-8",encoding:"B")));
        messageHelper.setTo("test@mail.com");
        messageHelper.setSubject("메일 제목");
        messageHelper.setText("메일 내용(html)",true);
        
        javaMailSender.send(message);
        
    }catch(Exception e){
        e.printStackTrace();
    }
}

MimeMessageHelper
MIME 메시지를 만들기 위한 클래스
HTML 레이아웃에서 이미지,일반적인 메일 첨부 파일 및 텍스트 내용을 지원

profile
주니어 백엔드 개발자. 까먹는다 기록하자!

0개의 댓글