이메일 전송 프로토콜
- SMTP (이메일 전송): 이메일을 보낼 때 사용.
- POP3 (이메일 수신): 이메일을 서버에서 다운로드하여 클라이언트로 가져옴.
- IMAP (이메일 관리): 서버에서 이메일을 관리하고 여러 기기에서 동기화.
Mail Server (메일 서버)
- 목적: 이메일을 송수신하고 저장, 관리.
- 역할: 이메일 송신(SMTP), 수신(POP3/IMAP), 저장 및 관리.
JSP 이메일 전송 폼 (3.EmailTest.jsp)
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>이메일 전송</title>
</head>
<body>
<form action="./proc/sendEmail.jsp" method="post">
<table>
<tr><td>보내는 사람</td><td><input type="email" name="sender"></td></tr>
<tr><td>받는 사람</td><td><input type="email" name="receiver"></td></tr>
<tr><td>제목</td><td><input type="text" name="title"></td></tr>
<tr><td>내용</td><td><textarea name="content"></textarea></td></tr>
<tr><td colspan="2" align="right"><input type="submit" value="전송하기"></td></tr>
</table>
</form>
</body>
</html>
이메일 전송 처리 JSP
1. JSP에서 데이터 받기
- request.getParameter(): 폼에서 입력한 데이터(보내는 사람, 받는 사람, 제목, 내용)를 HTTP 요청을 통해 받습니다.
// 데이터 수신
String sender = request.getParameter("sender");
String receiver = request.getParameter("receiver");
String title = request.getParameter("title");
String content = request.getParameter("content");
// Gmail 앱 비밀번호
String appPassword = "cgdx jisw lklf afdc";
2. SMTP 서버 설정
- Properties: JavaMail API에서 SMTP 서버에 필요한 설정을 저장합니다.
mail.smtp.host: 사용하려는 SMTP 서버의 주소 (여기서는 Gmail).
mail.smtp.port: 이메일을 전송할 포트 (465번 포트는 SSL을 통한 보안 연결에 사용).
mail.smtp.auth: SMTP 서버에서 인증을 요구함을 지정.
mail.smtp.ssl.enable: SSL을 통해 안전하게 이메일을 전송하도록 설정.
mail.smtp.ssl.trust: Gmail 서버를 신뢰할 수 있도록 설정.
Properties prop = new Properties();
prop.put("mail.smtp.host", "smtp.gmail.com");
prop.put("mail.smtp.port", "465");
prop.put("mail.smtp.auth", "true");
prop.put("mail.smtp.ssl.enable", "true");
prop.put("mail.smtp.ssl.trust", "smtp.gmail.com");
3. Gmail 세션 생성
- Session: 이메일을 보내기 위한 세션을 설정.
- Authenticator: 이메일 서버에 연결하기 전에 사용자 인증을 처리.
- PasswordAuthentication: 이메일 주소와 앱 비밀번호를 사용해 인증 정보를 설정.
- Gmail의 경우 앱 비밀번호를 사용하여 로그인.