Site Search :
Standard Enterprise XML Methodology Pattern Setting Tunning Other
Article Contributors
GuestBook
Javapattern Maven
XSourceGen Dev
JetSpeed Test
JLook Image
jLook Family Site


Java WebMail System Implementation(4)
 
첨부파일의 메일보내기 및 POP3서버의 폴더내용을 이용하여 데이터를 가져오도록 하는 샘플을 설명과 함께 보도록 하자. ( 2003/05/13 ) 683
Written by ienvyou - 최지웅
1 of 4
 

Prolog

요즘 자바기술을 이용하여 굉장히 많은 일들이 벌어지고 있다.

Mobile쪽을 비롯하여 일반 application 및 대형 Enterprise환경까지 자바가 미치는 범위는 정말 광대하다.

여기서 시작되는 연재는 현재 J2EE(Java 2 Enterprise Edition)의 JavaMail을 다룰 것이다.

이번 연재에서 자바의 역사가 이렇다 저렇다 할수 있는 상황은 아닌것 같다.

이글을 읽는 사람은 OOP(Object Oriented Programming)의 개념을 정확히 알고 있어야 할것이다.

J2EE쪽 환경이라면 우선 기본적인 지식을 갖추어야 하지만 본 내용은 소스코드를 복사하여

여러분들의 편집기에 붙여넣고 컴파일한후 실행시켜도 돌아갈수 있게끔 만들었다.

장황한 설명은 하지 않겠다. 이제 interface의 진수를 맛보도록 하자.


▶Content(1부)
  1. Mail Attachment

  2. 첨부파일 메일보내기 소스보내기

  3. 첨부된 내용가져오기

  4. HTML이 포함된 메일 및 이미지 첨부하여 보내기

####################################################### # Java Mail API 1.2를 이용한 웹메일 시스템의 구현. # ####################################################### ▶파일 첨부하여 보내기(한글깨짐 처리) 파일첨부는 일반 텍스트파일, 이미지등을 메일의 메시지와 같이 조합하여 보내는 방법이다. 일반적인 Eudora나 pine같은 프로그램처럼 JavaMail API또한 메시지에 파일을 첨부하여 보낼수 있는 기능을 제공한다. 1. 파일 보내기 파일보내는 것도 메시지를 보내는 것과 마찬가지로 Part인터페이스들을 사용한다. 각각의 첨부를 조합하기 위해여 DataHandler인터페이스를 사용하여 다른 part부분에 첨가시켜야 한다. 만약 메일에 파일을 첨부하고자 한다면 FileDataSource 클래스를 사용하여 메일에 첨부하여야 할것이다. 또한 URL을 사용하고자 한다면 URLDataSource를 사용하도록 한다. 우선 BodyPart객체를 생성한 후에 DataSource객체를 생성하도록 한다. DataSource를 객체로 가지게 되었다면, 그 DataSource 객체를 DataHandler의 생성자에 argument값으로 값을 넘기게 하여야 하고, BodyPart객체의 setDataHandler()메소드를 사용하여 DataHandler를 넘기도록 한다. 마지막으로 할일은 BodyPart의 setFileName()메소드를 이용해서 원래 보내고자하는 파일의 이름을 명시하도록 세팅시키면 된다. 모든 순서코드의 내용은 아래와 같다. // 보낼 메시지의 선언. Message message = new MimeMessage(session); message.setFrom(new InternetAddress(from)); message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); message.setSubject("Hello JavaMail Attachment"); // 첫번째 Message BodyPart의 생성 BodyPart messageBodyPart = new MimeBodyPart(); // 보낼 내용의 세팅 messageBodyPart.setText("Pardon Ideas"); // 첫번째 메시지 내용의 부분을 multiPart에 첨가한다. Multipart multipart = new MimeMultipart(); multipart.addBodyPart(messageBodyPart); // 두번째 부분의 결합(파일 첨부코드) messageBodyPart = new MimeBodyPart(); DataSource source = new FileDataSource(filename); messageBodyPart.setDataHandler(new DataHandler(source)); messageBodyPart.setFileName(filename); multipart.addBodyPart(messageBodyPart); // 결합된 두개의 part를 메시지의 content에 세팅하도록 한다. message.setContent(multipart); //메시지 보내기 Transport.send(message); 만약 파일보내기 예제를 서블릿 프로그램으로 코딩하게 된다면 파일을 업로드할수 있는 html태그인 multipart/form-data를 사용할수 있다. <FORM ENCTYPE="multipart/form-data" method=post action="/myservlet"> <INPUT TYPE="file" NAME="thefile"> <INPUT TYPE="submit" VALUE="Upload"> </FORM> NOTE>메시지의 크기는 JavaMail API가 아닌 SMTP서버의 한계값이 기준이다. 아래의 프로그램은 서버에 자신의 아이디와 패스워드를 인증하는 부분에서 또 다른 방법을 보여준다. ConnectionListener라는 것과 TransportListener라는 인터페이스를 상속받아 사용하는 것을 보여주고 있다. 여러분들에게 optional하게 보여주기 위해 만든 코드이니 참조하기 바라며 중간에 한글파일첨부시 파일이름이 깨지는 문제를 해결한 코드를 집어넣었다.
 
1 2 3 4
References
 
아티클소스 : javaMail2.zip
Copyright ⓒ 2003 www.javapattern.info & www.jlook.com, an jLOOK co.,LTD