🔻Back-End/Features

[Features] spring 이메일 인증 구현(구글 이메일 이용)

_니지 2023. 1. 19. 21:16

❗구글 이메일의 앱 비밀번호 발급

앱 비밀번호 클릭!

앱 비밀번호라고 떠있지 않은 경우는 위에 있는 2단계 인증부터 해주시면 뜹니다

 

메일, window 컴퓨터 선택 후 생성
발급 받은 앱 비밀번호는 잘 복사해두기

 

 

❗이메일 등록하기

컴퓨터에서 메일 앱을 열어주기

 

계정 추가를 클릭 후 다른 계정 클릭

 

구글 이메일과 복사해둔 앱 비밀번호를 암호에 넣어주기

 

 

❗스프링 프로젝트 설정

//이메일 인증
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-mail', version: '2.6.3'

build.gradle에  의존성 추가

 

---
spring:
  mail:
    host: smtp.gmail.com
    port: 587
    username: #앱 비밀번호 발급받은 google 계정
    password: #발급받은 앱 비밀번호
    properties:
      mail:
        smtp:
          starttls:
            enable: true
          auth: true

application.yml에 설정 추가

username과 password에 구글 이메일과 앱 비밀번호를 입력해줍니다

 

@Service
@RequiredArgsConstructor
public class EmailService {

    private final JavaMailSender emailSender;


    public UserRes.EmailAuthRes sendEmail(String email) throws MessagingException, UnsupportedEncodingException {
        UserRes.EmailAuthRes emailAuthRes = new UserRes.EmailAuthRes();

        Random random = new Random();
        int checkCode = random.nextInt(888888) + 111111;

        String sender = "yujinkwon.dev@gmail.com"; //보내는 사람
        String receiver = email; //받는 사람
        String title = "회원가입 인증 번호"; //제목
        String text = ""; //내용
        text += "<div style='margin:10%;'>";
        text += "<div style='font-size:130%'>";
        text += "CODE : <strong>";
        text += checkCode + "</strong><div><br/> ";
        text += "</div>";


        MimeMessage message = emailSender.createMimeMessage();
        message.addRecipients(MimeMessage.RecipientType.TO, receiver); //받는 이메일 설정
        message.setSubject(title); //제목 설정
        message.setFrom(sender); //보내는 사람
        message.setText(text, "utf-8", "html");  //내용
        emailSender.send(message);

        emailAuthRes.setCheckCode(checkCode);
        return emailAuthRes;
    }
 }

EmailService를 만든 후 이메일을 보내는 양식을 작성해줍니다

 

 

❗테스트

이메일 인증 api까지 만들어서 테스트해보면

응답에 확인 코드가 오는 것을 볼 수 있고
메일에도 같은 내용으로 확인 코드가 발송되는 것을 볼 수 있습니다!

 

 

 

728x90
반응형