강좌

HOME > 강좌 >
강좌| 리눅스 및 오픈소스에 관련된 강좌를 보실 수 있습니다.
 
JavaMail 파일첨부메일
조회 : 5,233  




2000-12-22 kenu


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. 파일 첨부 메시지입니다.."; 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+"접속에 문제가 생겼네요. 발송하지 못했습니다."); } %>

빨간색 부분이 추가된 부분입니다. filename 에는 physical path(하드상에서의 파일 위치)를 정해주어야 합니다. form을 이용해서 파일을 전달 받는 것은 지금 열심히 찾고 있습니다. 초보의 길 험난하기만 합니다. 이 소스는 자동메일 보낼 때 파일 첨부해주는 기능이 필요하다면 그 때 사용하시면 됩니다.

win2000 + IIS + tomcat 에서 테스트해 본 소스입니다. 혹시 form으로 파일 전송하는 법 아시는 분은 알려주시면 제가 상당히 고맙겠습니다. jspSmartUpload를 사용해도 되겠지만, 그건 서버에 업로드된 다음에 서버에서 전송하는 법으로 구현해야 될 것 같아서요. 그리고 시간내서 jspSmartUpload 사용법도 강좌(?)로 올릴께요. 초보에게는 도움이 되겠죠.

한가지 더 소스분석은 설명하지 않을게요. 보시면 다 감 잡으실 것 같네요. api 좀 더 뒤져서 저도 정리가 되면 설명을 올리도록 할텐데, 돌아가는 소스, 더 분석할 것 같지가 않네요. 제가 절 조금 알죠.

그리고, form 으로 파일첨부해서 전송하려면 form tag안 ENCTYPE="multipart/form-data" 부분이 들어가야합니다. 다음 강좌에서 자세히 다루겠습니다. 그럼 이만...

 

참고 : javamail1.2 pakage의 demo/sendfile.java
http://java.sun.com/products/javamail/index.html

kenu: kenu@okjsp.pe.kr
http://okjsp.pe.kr


[원글링크] : https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=629


이 글을 트위터로 보내기 이 글을 페이스북으로 보내기 이 글을 미투데이로 보내기

 
(주) 수퍼유저