23/04/05 Jsp

서지우·2023년 5월 31일
0

JSP

목록 보기
7/7

메일보내기

jar다운로드 하기


깃에 올려놓음

Gmail SMTP 사용하기

구글 계정의 보안에 들어가서 2단계 인증을 한다.
(나는 다해서 저렇게 뜸)

비밀번호를 입력해서 2단계 인증 ON을 해준다.

다시 보안으로 돌아와 앱 비밀번호를 생성해준다.

기타로 설정하고

기기를 SMTP로 해준다.

기기용 앱 비밀번호가 생성된다. 이 번호를 application.proerties에 사용한다.

GmailSend.java 만들기

mail패키지를 만들어준다.

gmail에서 보낼 수 있는 java파일을 만든다.
(주석을 참고)

package ch16;

import java.util.Properties;

import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import org.apache.catalina.ssi.SSICommand;

public class GmailSend {
	
	private static class SMTPAuthenticator extends Authenticator {
		public PasswordAuthentication getPasswordAuthentication() {
            //앱 생성한 구글계정입력, 생성해서 얻은 비밀번호 입력
			return new PasswordAuthentication("miliseo38@gmail.com", "rlciaujmnrwbjaqp");
		}
	}
	public static void send(String title, String content, String toEmail) {
		Properties p = new Properties();

		p.put("mail.smtp.starttls.enable", "true");
		// 이메일 발송을 처리해줄 SMTP서버
		p.put("mail.smtp.host", "smtp.gmail.com");
		// SMTP 서버의 인증을 사용한다는 의미
		p.put("mail.smtp.auth", "true");
		// TLS의 포트번호는 587이며 SSL의 포트번호는 465이다.
		p.put("mail.smtp.port", "587");
		// soket문제와 protocol문제 해결
		p.put("mail.smtp.ssl.trust", "smtp.gmail.com");
		p.put("mail.smtp.socketFactory.fallback", "false");
		p.put("mail.smtp.ssl.protocols", "TLSv1.2");
		
		try {
			Authenticator auth = new SMTPAuthenticator();
			Session session = Session.getInstance(p, auth);
			session.setDebug(true); 
			MimeMessage msg = new MimeMessage(session);
			String message = content;
			msg.setSubject(title);
			Address fromAddr = new InternetAddress("miliseo38@gmail.com");//생성한 계정 
			msg.setFrom(fromAddr);
			Address toAddr = new InternetAddress(toEmail); 
			msg.addRecipient(Message.RecipientType.TO, toAddr);
			msg.setContent(message, "text/html;charset=KSC5601");
			Transport.send(msg);
		} catch (Exception e) { 
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		String title = "제목 테스트1";
		String content = "내용 테스트2";
		String toEmail = "c81235@naver.com";//받는 이메일 주소
		GmailSend.send(title, content, toEmail);
		System.out.println("성공~~~~~~");
	}
}

실행하면 아래와 같이 콘솔이 뜨고

메일을 답장 받는 주소로 들어가면 보내져 있는 것을 볼 수 있다.

메일 보내는 화면 만들기

mail패키지 안에 mgr을 넣어준다.

DBConnectionMgr.java

MemberMgr.java

MailSend.java

Mgr이랑 같은 역할을 한다.
(메일 Mgr이라고 보면 됨)

package mail;

public class MailSend {
	
	public boolean sendPwd(String id, String email) {
		boolean flag = false;
		MemberMgr mgr = new MemberMgr();
		String pwd = mgr.findPwd(id, email);
		if(pwd!=null) {
			String title = "OOO.com에서 id와 pwd를 전송합니다.";
			String content = "id / pwd : " + id + "/" + pwd;
			GmailSend.send(title, content, email);
			flag = true;
		}
		return flag;
	}

}

mailSend.jsp

webapp폴더 아래에 mail폴더를 만들어주고 그 안에 만든다.

<%@ page contentType="text/html; charset=UTF-8" %>
<html>
<head>
<title>JSP Email</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body bgcolor="#FFFFCC">
<div align="center">
<br/><br/>
<table width="400"  cellpadding="3">
	<tr>
		<td bgcolor="#FF3412" height="25" align="center">비밀번호 찾기</td>
	</tr>
</table>
<br/>
<form name="postFrm" method="post" action="mailSendProc.jsp" >
<table width="400" cellpadding="3" align="center">
	<tr>
		<td align=center>
		<table align="center">
			<tr>
				<td width="10%">id</td>
				<td width="90%">
				<input name="id" size="10" maxlength="8"></td>
			</tr>
			<tr>
				<td>이메일</td>
				<td>
				<input name="email" size="30" maxlength="30"></td>
			</tr>
			<tr>
				<td colspan="2"><hr/></td>
			</tr>
			<tr>
				<td colspan="2">
					 <input type="submit" value="SEND">
					 <input type="reset" value="다시쓰기">
				</td>
			</tr>
		</table>
		</td>
	</tr>
</table>
</form>
</div>
</body>
</html>

실행하면 다음과 같은 화면이 출력된다.

메일보내기 기능

mailSendProc.jsp

<!-- mailSendProc.jsp -->
<%@page contentType="text/html; charset=UTF-8"%>
<jsp:useBean id="msend" class="mail.MailSend"/>
<%
	//전송 성공 및 실패 -> mailSend.jsp응답
	String id = request.getParameter("id");
	String email = request.getParameter("email");
	boolean result = msend.sendPwd(id, email);
	String msg = "전송실패";
	if(result){
		msg = "전송성공";
	}
%>
<script>
	alert("<%=msg%>");
	location.href = "mailSend.jsp";
</script>

DB에 들어가 email주소를 바꿔놔준다.
(앱 생성한 계정으로)

mailSend.jsp를 실행해 DB에 저장된 아이디와 이메일 주소를 입력해준다.

성공이라는 알림창과 함께 메일이 들어온 것을 볼 수 있다.


0개의 댓글

관련 채용 정보