728x90
join.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ include file="/include/header.jsp" %>
<table width=600 border=0 align=center>
<tr>
<td align=center class="td_title">회원가입</td>
</tr>
</table>
<script>
function email_ok(str){
var num = parseInt(Math.random() * 100000);
alert(num);
$.ajax({
url: "/mailSend", //전송받을 페이지 경로 //서블릿
type: "post", //데이터 읽어오는 방식 //데이터 전송방식
dataType: "text", //데이터 방식
data: "num="+num+"&email="+str,
success:function(text){ //성공일 경우
//$("#id_result").html(text);
alert("메일인증 확인하세요")
},
error:function(){ //실패일 경우
alert("실패");
}
});
}
</script>
<form name="join" action="join2_insert" method="post">
<table width=600 border=1 align=center>
<tr>
<td>메일주소</td>
<td>
<input id = "email" name="email" value="">
<input type="button" value="메일인증" onclick="email_ok(email.value)"><br>
<input id="" name="" placeholder="인증번호를 입력하세요">
</td>
</tr>
<tr>
<td></td>
<td><button>회원가입</button></td>
</tr>
</table>
</form>
<%@ include file="/include/footer.jsp" %>
mail.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="mailSend" method="post">
<table>
<tr>
<td>받는 사람 메일</td>
<td><input name="receiver"></td>
</tr>
<tr>
<td>제목</td>
<td><input name="subject"></td>
</tr>
<tr>
<td>내용</td>
<td><textarea name="content"></textarea></td>
</tr>
<tr>
<td></td>
<td><button>메일 보내기</button></td>
</tr>
</table>
</form>
</body>
</html>
MailSend.java
package mail;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/mailSend")
public class MailSend extends HttpServlet {
private static final long serialVersionUID = 1L;
public MailSend() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String num = request.getParameter("num");
String receiver = request.getParameter("email");
//String subject = request.getParameter("subject");
String subject ="테스트 입니다.";
String content = "인증번호"+num;
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
try {
Properties p = System.getProperties(); //서버 정보를 p객체에 저장
p.put("mail.smtp.starttls.enable","true");
p.put("mail.smtp.host","smtp.gmail.com"); //gmail.com
p.put("mail.smtp.auth", "true");
p.put("mail.smtp.port", "587"); //gmail 포트번호
Authenticator auth = new GoogleAuthentication(); //인증정보 생성
Session s = Session.getInstance(p, auth); //메일 전송 역할하는 객체 생성
Message m = new MimeMessage(s); //s객체를 사용하여 전송할 m객체 생성
Address receiver_address = new InternetAddress(receiver); //받는 사람
//메일 전송에 필요한 설정 부분
m.setHeader("content-type", "text/html;charset=utf-8");
m.addRecipient(Message.RecipientType.TO, receiver_address);
m.setSubject(subject);
m.setContent(content, "text/html;charset=utf-8");
m.setSentDate(new Date());
Transport.send(m); //메세지를 메일로 전송
out.print("메일 전송");
} catch (Exception e) {
e.printStackTrace();
}
}
}
GoogleAuthentication.java
package mail;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
public class GoogleAuthentication extends Authenticator{
PasswordAuthentication passAuth;
public GoogleAuthentication() { //생성자
passAuth = new PasswordAuthentication("아이디@gmail.com","16자리 비밀번호");
//gmail 아이디(메일주소), 앱 비밀번호(2단계 인증) 발급받은 16자리
}
public PasswordAuthentication getPasswordAuthentication() {
return passAuth;
}
}
※ 사용자계정이 한글로 되어있다면 실행되지 않습니다. 기존에 사용하던 계정명 변경만으로는 안되니 만약 한글로 되어있다면 사용자계정을 추가해서 영어로 생성하거나, 포맷을 해서 영어로 다시 생성해야합니다.
'Tools & Functions > Project 기능들' 카테고리의 다른 글
SSE 통신(Server Sent Event) (0) | 2024.05.24 |
---|---|
[JSP] 댓글 기능 구현 (0) | 2024.05.19 |
[JSP] 영상 업로드 기능구현 (0) | 2024.05.19 |
[JSP] 쪽지 기능 구현 (0) | 2024.05.19 |
[JSP] 선택삭제 기능 구현(체크박스) (0) | 2024.05.19 |