[Web] Day13 - 메일 서버

sue·2024년 1월 22일

📒국비학원 [Web]

목록 보기
15/21
post-thumbnail

✅ 메일서버

  • outlook : 클라이언트가 메일서버에 들어가기 위한 프로그램
    -> 자체적으로 pop3를 제공해서 메일을 지우게끔 함

  • 사서함 : 메일을 쓰게 되면 (메일서버 안) 계정이름으로 폴더가 만들어짐

  • SMTP : 이 프로토콜이 있어야만 메일을 상대방에게 보내 ㄹ수 있음

- POP / IMAP : 프로토콜을 통해 메일을 받아서 사서함을 볼 수 있는 방법 (POP3를 더 많이 봄)

POP (= MOVE) :

  • 장점 : 메일을 로컬컴퓨터로 이동시켜서 메일을 읽을 수 있게 함
  • 단점 : 집에서 볼 수 없음 (이동하니까)

IMAP (= COPY) :

  • 장점 : 메일을 복사해서 집에서도 볼 수 있음 (복사니까)
  • 단점 : 메일이 쌓이다보니까 어느정도 쌓이면 reject거절이 됨

  • 프로토콜은 다운받을 수 있는데, 메일서버는 급한대로 아파치에서 구현할 수 있는 에뮬레이터(하드웨어 -> 소프트웨어로 바꾼 것)를 사용해보도록 하자!

1. 프로토콜 /메일 서버 [다운로드]

⬇️ 오라클 - [mail.zip] 다운 [ JavaMail API 1.4.3 ]

: 메일을 주고받을 때 사용하는 프로토콜


[프로토콜] 따로따로 가지고있는것

[프로토콜] 통채로 가지고있는 것

✅ 톰캣 lib에 드래그해서 프로토콜 사용하기


⬇️ 오라클 - [jaf-1_1_1.zip] 다운

: JavaBeans Activation Framework 1.1 Download
: 파일 첨부가 가능하게 하는 라이브러리

✅ 드래그해서 라이브러리 사용하기


⬇️ 아파치 - 메일서버 다운


✅ 메일서버 사용방법


⭐ 에뮬레이터[메일서버] 실행되는지 확인

: 항상 띄워놔야 함!!

메일 서버 포트 기억해두자!

: DB의 기본포트 : 8080


1. 메일 보내기

✏️ Test1.

💻 입력

폴더/파일 만들기


<%@ page contentType="text/html; charset=UTF-8"%>

  • MimeMessage의 Mime = text/html

Session


✉️ 메일 보내보면 전송

:가상 이메일 검색


⬇️ sendMail.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri = "http://java.sun.com/jsp/jstl/core" %> 
<%
	request.setCharacterEncoding("UTF-8");
	String cp = request.getContextPath();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>


<form action="sendMail_ok.jsp" method="post">
<table border="1" align="center" cellpadding="0" cellspacing="0">
	<tr>
		<td>보내는 사람 이름
		</td>
		<td>
		<input type="text" name="senderName" size="50">
		</td>
	</tr>
	<tr>
		<td>보내는 사람 E-Mail
		</td>
		<td>
		<input type="text" name="senderEmail" size="50">
		</td>
	</tr>
	<tr>
		<td>받는 사람 E-Mail
		</td>
		<td>
		<input type="text" name="receiverEmail" size="50">
		</td>
	</tr>
	<tr>
		<td>제목
		</td>
		<td>
		<input type="text" name="subject" size="50">
		</td>
	</tr>
	<tr>
		<td>내용
		</td>
		<td>
		<textarea rows="8" cols="50" name="content"></textarea>
		</td>
	</tr>
	<tr>
		<td colspan="2" align="center">
		<input type="submit" value="메일보내기"/>
		</td>
	</tr>
	
</table>
</form>


</body>
</html>

⬇️ sendMail_ok.jsp

<%@page import="javax.mail.Transport"%>
<%@page import="javax.mail.internet.InternetAddress"%>
<%@page import="javax.mail.Message"%>
<%@page import="javax.mail.internet.MimeMessage"%>
<%@page import="javax.mail.Session"%>
<%@page import="java.util.Properties"%>
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
	request.setCharacterEncoding("UTF-8");
	String cp = request.getContextPath();
	
	String senderName = request.getParameter("senderName");
	String senderEmail = request.getParameter("senderEmail");
	String receiverEmail = request.getParameter("receiverEmail");
	String subject = request.getParameter("subject");
	String content = request.getParameter("content");
	
	String host = "localhost";
	
	//javax.mail.Session은 Java Mail API를 사용하는 출발점이 되는 클래스
	//javax.mail.Message 클래스는 메일을 표현하기 위해 사용되는 추상 클래스로
	//주제, 수신자의 이메일주소, 발송자의 이메일 주소, 보낸 날짜와 같은 
	//실제 이메일 메시지의 세부 사항을 나타낸다
	//MimeMessage 클래스는 Message 추상 클래스로부터 상속받은 인터넷 메일 클래스로
	//메일에 여러 개의 파일을 첨부시켜서 사용 (Multipurpose Internet Mail Extensions)
	//java.util.Properties는 getProperties()메소드를 사용하여 시스템의 환경변수 값을
	//얻어올 수 있다. 환경변수의 설정은 Key와 Value 쌍으로 저장되어 있다.
	
	//JavaMail API를 이용하여 메일을 전송하는 과정
	//1.javax.mail.Session 클래스의 인스턴스를 구한다.
	//2.javax.mail.Message 클래스를 사용하여 전송하고자 하는 메일 메시지를 작성한다.
	//3.javax.mail.Transport 클래스를 사용하여 작성한 메일을 전송한다.
	
	Properties prop = System.getProperties();
	Session ssn = Session.getInstance(prop,null);
	
	try{
		
		MimeMessage message = new MimeMessage(ssn);
		
		message.addRecipient(Message.RecipientType.TO, 
				new InternetAddress(receiverEmail));
		
		message.setFrom(new InternetAddress(senderEmail,senderName,"UTF-8"));
		
		message.setSubject(subject, "UTF-8");
		
		//content에 내용만 해서 보내게 되면 -> 그 사용자가 메일을 받게 되고, 
		//메일을 받았을때  get방식의 그 콘텐츠를 클릭하면 됨
		message.setContent(content, "text/plain;charset=UTF-8");
		
		Transport tp = ssn.getTransport("smtp");
		tp.connect(host,"","");//ip,id,pw
		tp.sendMessage(message, message.getAllRecipients());
		tp.close();
		
		out.print("메일 전송 완료!!");
		
		
	}catch(Exception e){
		System.out.print(e.toString());
	}

%>

2. 파일첨부해서 메일 보내기

✏️ Test2.

💻 입력


파일/폴더 생성 (java)


js / css 드래그


파일 첨부시 무조건 붙여야함 (enctype)


파일첨부
: input - type : file


⬇️ mailSend_ok.jsp

파일업로드

메일 전송


⬇️ MailSend.java // = DTO


⬇️ mailSend.jsp

보내는 작업


✉️메일 잘 전송되는거 확인


delete를 주석처리하면 파일이 남게 됨


활용하는 법 (content)

0개의 댓글