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>
완벽한