본문 바로가기
Java

JAVA]회원가입 시,이메일 인증 구현하기.[Gmail,지메일]

by 완기 2020. 10. 5.
728x90
반응형

게시글의 조회수가 많아져 알립니다.

해당 게시글은 1편이고 2편은  여기에 있습니다.

2편에서는 서버 측의 코드가 바뀌었으니 1편만 확인해서는 기능 구현이 안 될 수 있습니다.


 

 

 

스프링 부트로 웹을 개발하면서 웹 사이트에 흔히 본인 인증 수단으로 사용할 수 있는 이메일 인증을 구현해보고 싶어서 오랜만에 노트북을 열었다.

 

 

사용기술 : 

AJAX

Jquery

Spring boot starter mail

 


 

 

우선 발신 메일을 설정하기 위해 application.properties를 설정해야 한다.

 

spring.mail.host=smtp.gmail.com  //지메일 SMTP를 사용하기 위해 설정
spring.mail.port=587 //메일 전송 포트설정 
spring.mail.username=발신자 이메일 주소 //보내는사람 이메일 주소를 설정
spring.mail.password=발신자 이메일 비밀번호 //발신자 이메일 비밀번호
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true

본인의 상황에 맞게 설정을 해주고,

 

https://www.google.com/settings/security/lesssecureapps

 

로그인 - Google 계정

하나의 계정으로 모든 Google 서비스를 Google 계정으로 로그인

accounts.google.com

 

해당 링크에 접속해서 

 

 

그림과 같이 보안 수준이 낮은 앱 허용을 해준다.

 

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-mail</artifactId>
			<version>2.2.8.RELEASE</version>
</dependency>

pom.xml에 해당 의존성을 추가해준다.

 

 

 

그다음 버튼을 누르면 메일이 전송되도록 제이쿼리로 ajax 함수를 사용하여 다음과 같이 코드 작성해줬다.

 

$(".sendMail").click(function() {// 메일 입력 유효성 검사
		var mail = $(".mail").val(); //사용자의 이메일 입력값. 
		
		if (mail == "") {
			alert("메일 주소가 입력되지 않았습니다.");
		} else {
			mail = mail+"@"+$(".domain").val(); //셀렉트 박스에 @뒤 값들을 더함.
			$.ajax({
				type : 'post',
				url : '/CheckMail',
				data : {
					mail:mail
					},
				dataType :'json',

			});
			alert("인증번호가 전송되었습니다.") 
			isCertification=true; //추후 인증 여부를 알기위한 값
		}
	});

 

 

300x250

자바 코드

 

@PostMapping("/CheckMail") // AJAX와 URL을 매핑시켜줌 
@ResponseBody  //AJAX후 값을 리턴하기위해 작성

	public String SendMail(String mail) {
		Random random=new Random();  //난수 생성을 위한 랜덤 클래스
		String key="";  //인증번호 

		SimpleMailMessage message = new SimpleMailMessage();
		message.setTo(mail); //스크립트에서 보낸 메일을 받을 사용자 이메일 주소 
		//입력 키를 위한 코드
		for(int i =0; i<3;i++) {
			int index=random.nextInt(25)+65; //A~Z까지 랜덤 알파벳 생성
			key+=(char)index;
		}
		int numIndex=random.nextInt(9999)+1000; //4자리 랜덤 정수를 생성
		key+=numIndex;
		message.setSubject("인증번호 입력을 위한 메일 전송");
		message.setText("인증 번호 : "+key);
		javaMailSender.send(message);
        return key;
	}

 

 

아래 자바 코드까지 완성해주고, 인증 버튼을 누르게 되면

 


 

이메일이 잘 도착한 모습.

 

 

 

추후에는 인증 여부, 일치 여부 등 유효성 검사를 위한 게시물을 업로드한다.

728x90
728x90

댓글