(회원가입) 이메일 인증 확인

1. pom.xml

<!-- mail -->
		<!-- https://mvnrepository.com/artifact/javax.mail/mail -->
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4.7</version>
        </dependency>        
        
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-context-support -->
		<dependency>
		    <groupId>org.springframework</groupId>
		    <artifactId>spring-context-support</artifactId>
		    <version>5.3.18</version>
		</dependency>

2. 디스패처-서블릿

<!-- navermail설정 -->
    <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> 
     <property name="host" value="smtp.naver.com"/> <!-- 메이서버 호스트 -->
     <property name="port" value="587"/> <!-- 메이서버 포트번호 -->
     <property name="username" value="[email protected]"/> <!-- 자신의 이메일 아이디 -->
     <property name="password" value="TlsdnS8853@#$@$"/> <!-- 자신의 비밀번호 -->
       <!-- 보안연결 SSL과 관련된 설정 -->
     <property name="javaMailProperties">
      <props>
      <prop key="mail.smtp.auth">true</prop>
      <prop key="mail.smtp.starttls.enable">true</prop>
      <prop key="mail.smtps.checkserveridentity">true</prop>
      <prop key="mail.smtps.ssl.trust">*</prop>
      <prop key="mail.smtp.ssl.protocols">TLSv1.2</prop>
      <prop key="mail.debug">true</prop>
      <prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
      </props>
     </property>
    </bean>

3. 컨트롤러

@Autowired
    private JavaMailSenderImpl mailSender;

3-1. 제어 장치

//이메일 인증
	@RequestMapping(value="/user/mailCheck.do", method=RequestMethod.GET)
	@ResponseBody
	public String mailCheck(String email) throws Exception{
		System.out.println("이메일 인증 요청");
		System.out.println("인증번호 수신 이메일 : " + email);
		
		/* 인증번호(난수) 생성 */
        Random random = new Random();
        int checkNum = random.nextInt(888888) + 111111;
        System.out.println("인증번호 ======== " + checkNum);
        
        /* 이메일 보내기 */
        String setFrom = "[email protected]";
        String toMail = email;
        String title = "회원가입 인증 이메일 입니다.";
        String content = 
                "홈페이지를 방문해주셔서 감사합니다." +
                "<br><br>" + 
                "인증 번호는 " + checkNum + "입니다." + 
                "<br>" + 
                "해당 인증번호를 인증번호 확인란에 기입하여 주세요.";
        
        try {
            
            MimeMessage message = mailSender.createMimeMessage();
            System.out.println("createMimeMessage ======" + message);
            MimeMessageHelper helper = new MimeMessageHelper(message, true, "utf-8");
            helper.setFrom(setFrom);
            helper.setTo(toMail);
            helper.setSubject(title);
            helper.setText(content,true);
            mailSender.send(message);
            
        }catch(Exception e) {
            e.printStackTrace();
        }
        String num = Integer.toString(checkNum);
		return num;
	}

4. jsp

var code = "";                //이메일전송 인증번호 저장위한 코드
$(document).ready(function(){
	//이메일 인증
	/* 인증번호 이메일 전송 */
	$("#mail_check_button").click(function(){
		
	    var email = $("#mail_input").val();          // 입력한 이메일
	    var cehckBox = $("#mail_check_input");       // 인증번호 입력란
	    var boxWrap = $("#mail_check_input_box");    // 인증번호 입력란 박스
	    
		$.ajax({ 
		        type:"GET",
		        url:"/boardAjax/user/mailCheck.do?email=" + email,
				success:function(data){
				//	console.log("data : " + data);
					cehckBox.attr("disabled",false);
					boxWrap.attr("id", "mail_check_input_box_true");
					code = data;
					
					
				}  
		    });
	    
	    
	});
	
	/* 인증번호 비교 */
	$("#mail_check_input").blur(function(){
		var inputCode = $("#mail_check_input").val();        // 입력코드    
	    var checkResult = $("#mail_check_input_box_warn");    // 비교 결과  
	    
	    if(inputCode == code){                            // 일치할 경우
	        checkResult.html("인증번호가 일치합니다.");
	        checkResult.attr("class", "correct");        
	    } else {                                            // 일치하지 않을 경우
	        checkResult.html("인증번호를 다시 확인해주세요.");
	        checkResult.attr("class", "incorrect");
	    }    
	});
}

4-1. JSP

<!-- 이메일  -->
		<div id="mail_wrap" class="form-group">
				<label for="disabledInput" id="mail_name" class="col-sm-2 control-label">이메일</label> 
				<div id="mail_input_box" class="col-sm-4">
					<input id="mail_input" name="memberMail" class="form-control" type="text" value="" title="메일">
				</div>
				<br/>
				<br/>
				<label for="disabledInput" id="final_mail_ck" class="col-sm-2 control-label">인증번호 확인</label> 
				<sapn class="mail_input_box_warn"></sapn>
				<div class="mail_check_wrap">
                    <div class="mail_check_input_box , col-sm-4" id="mail_check_input_box_false">
						<input id="mail_check_input" disabled="disabled" class="form-control" type="text" value="">
                    </div>
                    <div id="mail_check_button" class="btn btn-default">
                        <span>인증번호 전송</span>
                    </div>
                    <div class="clearfix"></div>
                    <br/>
                    <span id="mail_check_input_box_warn" style=""></span>
                </div>
		</div>

완벽한