본문 바로가기
스프링

스프링 이메일 인증

by 근즈리얼 2021. 11. 12.
728x90

이번 포스팅에서는 회원가입때 사용하기 위한 이메일 인증에 대해서 알아보겠습니다.

 

우선 결과를 먼저 보여드리겠습니다.

포스트맨을 이용해 emailCheck url에 email을 작성한 뒤 보냅니다.

밑의 사진은 저의 이메일주소로 온 인증번호입니다.

메일로 온 인증번호와 포스트맨의 리턴된 값이 같은 것을 알 수 있습니다.


이메일 인증을 구현하기 위해서 email 라이브러리를 먼저 가져와야 합니다.

build.gradle에 위의 문장을 추가합니다.

 

https://mvnrepository.com/repos/central

이곳에서 spring-boot-starter-mail을 검색한뒤 가장 많은 사람이 사용한 버젼을 가져오면 됩니다.

 

이제 추가적으로 .yml파일에 메일에 관련된 내용을 추가해야합니다.

.yml 파일안에 작성한 코드입니다.

저는 비지니스 계정을 만들어서 사용했습니다.

sprig:

    mail:

        ~~~~

이런식으로 작성하셔야 합니다!

 

EmailService의 코드

package syso.syso.service;

import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.MailSender;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

import java.util.Random;

@Service
@AllArgsConstructor
public class EmailService {

    private final JavaMailSender javaMailSender;

    public String mailCheck(String email){
        Random random = new Random(); //난수 생성
        String key=""; // 인증번호

        SimpleMailMessage message = new SimpleMailMessage();
        message.setTo(email);
        //message.setFrom("ohohgeunhy@gamil.com");

        for(int i = 0;i<3;i++){
            int index = random.nextInt(25)+65;

            key+=(char)index;
        }
        int numIndex = random.nextInt(9999)+1000;

        key +=numIndex;
        message.setSubject("인증번호 입력을 위한 메일 전송");
        message.setText("인증 번호 : " + key);

        javaMailSender.send(message);
        return key;
    }
}

- 아스키 코드와 random메소드를 이용하여 난수를 만든 뒤

- message에 제목과 내용에 난수를 넣고 보내면 됩니다.

 


혹시라도 에러가 발생한다면

구글 계정의 보안수준이 낮은 앱의 액세스를 허용해주셔야 합니다!!

또한 아이디와 비밀번호가 확실히 맞고 앱의 액세스를 허용했음에도 안된다면 컴퓨터의 보안검사를 꺼보시는 것을 추천합니다~!

728x90

댓글