JavaMail 패키지 demo 에 보면 좋은 예제들이 많이 있습니다. 이번 예제도 그중 sendfile.java라는 소스를 jsp로 옮긴 것입니다. 크게 어려운 것은 없습니다. 추가되는 부분이 있습니다. 이미 JavaMail 설치는 다 해놓으셨죠? 그런 줄 알고 넘어가겠습니다. 안하신 분들은 위쪽에 클릭해서 읽어보시고 설치할 것이 있습니다. JAF 랑 JavaMail...
소스는 다음과 같습니다.
sendfile.jsp |
<%@ page contentType = "text/html; charset=euc-kr" %>
<%@ page import="java.util.*,java.io.*,javax.mail.*,javax.mail.internet.*,javax.activation.*" %>
<%
String msgText = "This is a message include file. \n 파일 첨부 메시지입니다..";
String msgSubj = "JavaMail 파일첨부메일입니다.";
msgText = new String(msgText.getBytes("euc-kr"),"8859_1");
msgSubj = new String(msgSubj.getBytes("euc-kr"),"8859_1");
String to = "kenu@okjsp.pe.kr";
String from = "heogn@hotmail.com";
String host = "localhost";
String filename = "C:/AUTOEXEC.BAT";
// create some properties and get the default Session
Properties props = new Properties();
props.put("mail.smtp.host", host);
Session sess = Session.getDefaultInstance(props, null);
try {
// create a message
Message msg = new MimeMessage(sess);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address = {new InternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject(msgSubj);
// create and fill the first message part
MimeBodyPart mbp1 = new MimeBodyPart();
mbp1.setText(msgText);
// create the second message part
MimeBodyPart mbp2 = new MimeBodyPart();
// attach the file to the message
FileDataSource fds = new FileDataSource(filename);
mbp2.setDataHandler(new DataHandler(fds));
mbp2.setFileName(fds.getName());
// create the Multipart and its parts to it
Multipart mp = new MimeMultipart();
mp.addBodyPart(mbp1);
mp.addBodyPart(mbp2);
// add the Multipart to the message
msg.setContent(mp);
msg.setSentDate(new Date());
Transport.send(msg);
out.println(host+"를 통해 "+filename+"을 발송했습니다. ^_^");
} catch (MessagingException mex) {
out.println(mex.getMessage());
out.println(host+"접속에 문제가 생겼네요.\n발송하지 못했습니다.");
}
%>
|
빨간색 부분이 추가된 부분입니다. filename 에는 physical path(하드상에서의 파일 위치)를 정해주어야 합니다. form을 이용해서 파일을 전달 받는 것은 지금 열심히 찾고 있습니다. 초보의 길 험난하기만 합니다. 이 소스는 자동메일 보낼 때 파일 첨부해주는 기능이 필요하다면 그 때 사용하시면 됩니다.
win2000 + IIS + tomcat 에서 테스트해 본 소스입니다. 혹시 form으로 파일 전송하는 법 아시는 분은 알려주시면 제가 상당히 고맙겠습니다. jspSmartUpload를 사용해도 되겠지만, 그건 서버에 업로드된 다음에 서버에서 전송하는 법으로 구현해야 될 것 같아서요. 그리고 시간내서 jspSmartUpload 사용법도 강좌(?)로 올릴께요. 초보에게는 도움이 되겠죠.
한가지 더 소스분석은 설명하지 않을게요. 보시면 다 감 잡으실 것 같네요. api 좀 더 뒤져서 저도 정리가 되면 설명을 올리도록 할텐데, 돌아가는 소스, 더 분석할 것 같지가 않네요. 제가 절 조금 알죠.
그리고, form 으로 파일첨부해서 전송하려면 form tag안에 ENCTYPE="multipart/form-data" 부분이 들어가야합니다. 다음 강좌에서 자세히 다루겠습니다. 그럼 이만... |