[28] 자바 메일보내기 (첨부파일)
파일명 : mail_FileForm.jsp
--------------------------------------------------------
<%@ page contentType="text/html; charset=euc-kr" %>
<% String root = request.getContextPath(); // context 추출 %>
<html>
<head>
<title>mail JSP</title>
<link href="<%=root%>/css/style.css" rel="stylesheet" type="text/css">
</head>
<!----------------------------------------------------->
<body leftmargin="0" topmargin="0">
<!----------------------------------------------------->
<div align="center">
<h2>mail 쓰기</h2>
<form name="mailForm"
method="post"
enctype="multipart/form-data"
action="./mail_FileProc.jsp" >
<table border="0" align="center">
<tr>
<th bgcolor=silver>받는 사람</th>
<td><input type="text" name="to" size="61" value='prettyimo@nate.com'></td>
</tr><tr>
<th bgcolor="silver">보내는 사람</th>
<td><input type="text" name="from" size="61" value='test@prettyimo.cafe24.com'></td>
</tr><tr>
<th bgcolor='silver'>제 목</th>
<td><input type="text" name="subject" size="61" value="파일 전송 테스트 메일입니다."></td>
</tr><tr>
<th bgcolor='silver'>편지 내용</th>
<td><textarea name="msgText" rows="10" cols="60">파일 전송 테스트 메일입니다.</textarea>
</td>
</tr>
<tr>
<th bgcolor='silver'>첨부 파일 1</th>
<td><input type="file" name="file1" size="50"></td>
</tr>
<tr>
<th bgcolor='silver'>첨부 파일 2</th>
<td><input type="file" name="file2" size="50"></td>
</tr>
<tr>
<th bgcolor=silver>첨부 파일 3</th>
<td><input type="file" name="file3" size="50"></td>
</tr>
<tr>
<th bgcolor=silver>첨부 파일 4</th>
<td><input type="file" name="file4" size="50"></td>
</tr>
<tr>
<th bgcolor=silver>첨부 파일 5</th>
<td><input type="file" name="file5" size="50"></td>
</tr>
<tr>
<th colspan="2"></th>
</tr>
<tr>
<th colspan="2">
<input type="submit" value="보내기">
<input type="reset" value="취소">
</th>
</tr>
</table>
</form>
</div>
</body>
</html>
--------------------------------------------------------
파일명 : mail_FileProc.jsp
--------------------------------------------------------
<%@ page contentType = "text/html; charset=euc-kr" %>
<%@ page import="java.util.*,java.io.*,javax.mail.*" %>
<%@ page import="javax.mail.internet.*,javax.activation.*" %>
<%@ include file="./ssi.jsp" %>
<%
//---------------------------------------------------------------
// Fileupload 콤포넌트 관련 코드, 하나의 파일을 업로드 처리
//---------------------------------------------------------------
String param1 = ""; //일반 폼 태그
FileItem fileItem = null; //업로드 파일 객체
String filename = ""; //업로드 파일명
UploadManager requestWrap = new UploadManager(request, -1, -1, tempDir);
request = requestWrap;
ArrayList fileList = new ArrayList();
// 전송하려는 파일이 최종적으로 5개임으로 5번 순환합니다.
for(int i=1; i<=5; i++){
fileItem = requestWrap.getFileItem("file" + i);
long filesize = fileItem.getSize(); // 파일 사이즈
if(filesize > 0) {
filename = requestWrap.saveFile(fileItem, upDir);
fileList.add(filename);
out.println("전송된 파일명: " + filename + " / 전송된 파일 사이즈: " + filesize);
out.println("<br>");
}
}
out.println("<br><br>");
%>
<html>
<head>
<title>mail JSP</title>
<link href="<%=root%>/css/style.css" rel="stylesheet" type="text/css">
</head>
<!----------------------------------------------------->
<body leftmargin="0" topmargin="0">
<!----------------------------------------------------->
<div align="center">
<%
// javamail lib 이 필요합니다.
class MyAuthentication extends Authenticator {
PasswordAuthentication pa;
public MyAuthentication(){
pa = new PasswordAuthentication("test@prettyimo.cafe24.com", "test1004"); //ex) ID:cafe24@cafe24.com PASSWD:1234
}
public PasswordAuthentication getPasswordAuthentication() {
return pa;
}
}
Transport transport;
String host = "mw-002.cafe24.com"; //smtp mail server
Properties props = new Properties();
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth","true");
Authenticator auth = new MyAuthentication();
Session sess = Session.getInstance(props, auth);
String subject = toKor(request.getParameter("subject")); //제목
String msgText = toKor(request.getParameter("msgText")); //message
String from = request.getParameter("from"); //보내는 주소
String to = request.getParameter("to"); //받는 사람
try {
Message msg = new MimeMessage(sess);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address = {new InternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject(subject);
msg.setSentDate(new Date());
// 글을 문자만 보낼 경우
msg.setText(msgText);
// 글을 HTML 형식으로 보낼 경우
// msg.setContent(msgText, "text/html;charset=euc-kr");
//--------------------------------------------
// 첨부 파일 구현 부분
//--------------------------------------------
Multipart mpt = new MimeMultipart();
// 메일 내용
MimeBodyPart mail_text = new MimeBodyPart();
mail_text.setContent(msgText, "text/html;charset=euc-kr");
String sendfile = "";
for(int i=0; i<fileList.size(); i++){
sendfile = upDir + "/" + (String)fileList.get(i);
MimeBodyPart mbp = new MimeBodyPart();
FileDataSource fds = new FileDataSource(sendfile);
mbp.setDataHandler(new DataHandler(fds));
mbp.setFileName(MimeUtility.encodeText(fds.getName(), "KSC5601" , "B"));
mpt.addBodyPart(mbp);
}
mpt.addBodyPart(mail_text);
msg.setContent(mpt);
transport = sess.getTransport("smtp");
transport.send(msg);
out.println(to + "님에게 메일을 발송했습니다.<br><br>");
// 전송후 파일 삭제
for(int i=0; i<fileList.size(); i++){
Utility.deleteFile(upDir, (String)fileList.get(i));
out.println((String)fileList.get(i) + " 삭제됨.<br>");
}
} catch (MessagingException mex) {
out.println(mex.getMessage()+"<br>");
out.println(to + "님에게 메일 발을 실패 했습니다.");
}
%>
</div>
</body>
</html>
--------------------------------------------------------
파일명 : ssi.jsp
--------------------------------------------------------
<%@ page contentType="text/html; charset=euc-kr" %>
<%@ page import="java.util.*, java.io.*" %>
<%@ page import="www.utility.*"%>
<%@ page import="org.apache.commons.fileupload.*" %>
<%
request.setCharacterEncoding("euc-kr");
String root = request.getContextPath(); // www_jsp
// System.out.println("root: " + root);
%>
<%
// ----------------------------------------------------------------------------------
// 다운로드 관련 부분
// ----------------------------------------------------------------------------------
// 파일 다운로드 폴더
String downDir = "/storage";
// 파일 저장 폴더
String upDir = application.getRealPath("/storage");
System.out.println("upDir: " + upDir);
// 임시 저장 폴더
String tempDir = application.getRealPath("/temp");
// ----------------------------------------------------------------------------------
%>
<%!
String toKor(String s){
String str = null;
try{
//str = new String(s.getBytes("8859_1"), "KSC5601");// X
//str = new String(s.getBytes("8859_1"), "UTF-8"); // X
str = new String(s.getBytes("8859_1"), "EUC-KR"); // X
// str = new String(s.getBytes("KSC5601"), "euc-kr"); // O 한글 출력 안됨
//str = new String(s.getBytes("KSC5601"), "UTF-8"); // X
//str = new String(s.getBytes("KSC5601"), "8859_1");// X
}catch(Exception e){
}
return str;
}
%>
--------------------------------------------------------