본문 바로가기
개발/Spring

[회원가입] 회원가입 이메일 인증 구현

by 상용최 2020. 4. 4.
반응형

Build.gradle 파일에 dependencies 부분에 추가 해줍니다.

 

이메일 인증을 받기 위해서 이메일을 적고 인증번호를 보낼 수 있는 버튼과

인증번호를 입력하고 알맞는 값을 입력하였는지 확인할 버튼을 생성해야한다.

 


이메일을 보내는 부분


이메일을 보내는 버튼을 눌렀을 때 동작하는 function입니다.

isEmail function을 이용하여 이메일 형식인지 검사합니다. 

(select 방식으로 바꾸셔도 됩니다. 필자는 귀찮아서 정규식으로 검사했습니다.)

api를 호출하여 성공적으로 보냈으면 아무메세지를 안띄웠습니다.

원하시는 메세지를 출력하시거나 알려주시면 됩니다.

실패시에는 오류, 잠시 후 재시도라는 메세지를 띄웠습니다.

 

 

호출을 받는 Controller 부분입니다.

세션을 얻어오고 입력한 email값을 얻어옵니다.

 

mailService부분입니다.

JavaMailSenderImpl을 이용하여 메일을 보내줍니다.

받아온 session에 이메일을 key값으로 인증번호를 저장해줍니다.

MailHandler Class

public class MailHandler {
    private JavaMailSender sender;
    private MimeMessage message;
    private MimeMessageHelper messageHelper;

    // 생성자
    public MailHandler(JavaMailSender jSender) throws
            MessagingException {
        this.sender = jSender;
        message = jSender.createMimeMessage();
        messageHelper = new MimeMessageHelper(message, true, "UTF-8");
    }

    // 보내는 사람 이메일
    public void setFrom(String fromAddress) throws MessagingException {
        messageHelper.setFrom(fromAddress);
    }

    // 받는 사람 이메일
    public void setTo(String email) throws MessagingException {
        messageHelper.setTo(email);
    }

    // 제목
    public void setSubject(String subject) throws MessagingException {
        messageHelper.setSubject(subject);
    }

    // 메일 내용
    public void setText(String text, boolean useHtml) throws MessagingException {
        messageHelper.setText(text, useHtml);
    }

    // 첨부 파일
    public void setAttach(String displayFileName, String pathToAttachment) throws MessagingException, IOException {
        File file = new ClassPathResource(pathToAttachment).getFile();
        FileSystemResource fsr = new FileSystemResource(file);

        messageHelper.addAttachment(displayFileName, fsr);
    }

    // 이미지 삽입
    public void setInline(String contentId, String pathToInline) throws MessagingException, IOException {
        File file = new ClassPathResource(pathToInline).getFile();
        FileSystemResource fsr = new FileSystemResource(file);

        messageHelper.addInline(contentId, fsr);
    }

    // 발송
    public void send() {
        try {
            sender.send(message);
        }catch(Exception e) {
            e.printStackTrace();
        }
    }
}

 


인증번호 검사하는 부분


간단합니다.

key값으로 삼았던 email과 입력한 code를 api로 보내주면 됩니다.

true값이 반환되면 인증이 된것이므로 인증된지 안된지 체크하는 certificationYN element의 값을 true로 바꾸어줍니다.

보낸 값을 받는 Controller 부분입니다.

Session과 보낸값들을 받아옵니다.

 

Session에서 email을 기준으로 인증번호를 보낸것을 가져온다.

그리고 사용자가 입력한 code와 비교했을 때 같으면 true를 틀리면 false를 리턴한다.

 

 

이것으로 회원가입시 이메일 인증을 마치겠다.

반응형

댓글