자바 메일 보내기

 

이 내용은 오른쪽 위에 첨부된 자바메일보내기.zip파일을 토대로 한 것입니다.


다운받아서 압축풀어보시면 자바메일에 대해 자세히 설명해 놓은 PDF파일과 샘플소스가 있습니다.


참고하실분 받아보세요..^^


 


 


우선 해야할 것은 자바메일 API와 JAF를 설정하는 것입니다.


 


1. 자바메일 API 설정하기


다운로드 : http://java.sun.com/products/javamail/ 에 가셔서 다운받으세요


다운로드후 압축을 푸시면 mail.jar이라는 파일이 있는데 이녀석을 톰켓의 common\lib폴더 아래에 복사하여 주십시오.


 


2. JAF 설정하기


다운로드 : http://java.sun.com/products/javabeans/jaf/downloads/index.html 에 가셔서 다운 받으신 후 압축을 푸시면 activation.jar이라는 파일이 있는데 이녀석을 아까처럼 톰켓의 common\lib폴더 아래에 복사하여 주십시오.


 


그러면 모든 설정이 종료됩니다.


 


다음으로 할 일은 메일 보내기 구현입니다..


 


1. 첨부파일과 함께 보내기


 


package mailtest;


import java.util.Date;
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;


public class MailTransfer {


 private String from;
 private String to;
 private String filename;
 
 public MailTransfer(String from, String to, String filename) {
  this.from = from;
  this.to = to;
  this.filename = filename;
 }
 
 public void mailSend(){
  if(from == null || to == null || filename == null) {
   System.out.println("usage : java <from> <to> <filename>");
   System.exit(0);
  }
  
  try{   
   // 시스템 속성 객체 생성
   Properties props = System.getProperties();


   // POP3 메일 서버 속성 설정
   props.put("mail.smtp.host", "127.0.0.1");


   // 메일 서버 세션 생성
   Session session = Session.getInstance(props, null);


   // 메세지 정의
   Message message = new MimeMessage(session);
   message.setFrom(new InternetAddress(from));
   message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
   message.setSubject("안녕하세요. 자바 메일 첨부 파일입니다.");


   // 메세지 몸체 생성
   BodyPart messageBodyPart = new MimeBodyPart();


   // 메세지 텍스트 내용 설정
   messageBodyPart.setText("파일 첨부 메일입니다.");
   
   // 다양한 종류의 데이터 추가를 위한 객체 생성
   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);
   
   // Multipart 객체를  Message 객체에 추가
   message.setContent(multipart);


   // 보낸 날짜 설정..ㅡ0ㅡ;; 이거빠지니깐 에러나는데..ㅠㅠ
   message.setSentDate(new Date());
   
   // 생성된 메세지 전송
   Transport.send(message);
  }
  catch(javax.mail.MessagingException ex) {
   ex.printStackTrace();
  }
 }
}


 


 


 


2. html로 보내기


package mailtest;


import java.util.Date;
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;


public class HtmlTransfer {


 private String from;
 private String to;
 private String filename;
 
 public HtmlTransfer(String from, String to, String filename) {
  this.from = from;
  this.to = to;
  this.filename = filename;
 }
 
 public void mailSend(){
  if(from == null || to == null || filename == null) {
   System.out.println("usage : java <from> <to> <filename>");
   System.exit(0);
  }
  
  try{   
   // 시스템 속성 객체 생성
   Properties props = System.getProperties();


   // POP3 메일 서버 속성 설정
   props.put("mail.smtp.host", "127.0.0.1");


   // 메일 서버 세션 생성
   Session session = Session.getInstance(props, null);


   // 메세지 정의
   Message message = new MimeMessage(session);


   // 메일 헤더 설정
   message.setSubject("저의 가족입니다.");
   message.setFrom(new InternetAddress(from));
   message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));


   // 메세지 몸체 생성
   BodyPart messageBodyPart = new MimeBodyPart();


   // HTML 데이터 생성
   String htmlText = "<H3>안녕 우리 가족이야<H3>" + "<img src = \"cid:family\">";


   // 메세지 데이터 MIME 형식 설정


   // 단순히 텍스트로만 발송할경우에는 text/html 대신에 text/plain으로 바꾸시면 됩니다.
   messageBodyPart.setContent(htmlText, "text/html; charset=euc-kr");
   
   // 다양한 종류의 데이터 추가를 위한 객체 생성
   MimeMultipart multipart = new MimeMultipart("related");
   
   // 메세지 몸체를 Multipart 객체에 추가
   multipart.addBodyPart(messageBodyPart);
   
   // 이미지 메세지 몸체 생성
   messageBodyPart = new MimeBodyPart();
   
   // 메세지 몸체에 이미지 첨부
   DataSource fds = new FileDataSource(filename);
   
   // 메세지 몸체에 파일 객체 첨부
   messageBodyPart.setDataHandler(new DataHandler(fds));
   
   // 파일 이름 설정
   messageBodyPart.setFileName(filename);
   
   // 메일 헤더 설정
   messageBodyPart.setHeader("Content-ID", "family");


   // 메세지 몸체를 Multipart 객체에 추가
   multipart.addBodyPart(messageBodyPart);
   
   // Multipart 객체를  Message 객체에 추가
   message.setContent(multipart);


   // 보낸 날짜 설정..ㅡ0ㅡ;; 이거빠지니깐 에러나는데..ㅠㅠ
   message.setSentDate(new Date());
   
   // 생성된 메세지 전송
   Transport.send(message);
  }
  catch(javax.mail.MessagingException ex) {
   ex.printStackTrace();
  }
 }
}


 


 


 


3. 참고(메일보내기샘플파일)


이건 위의 파일내용들을 바탕으로 제가 짜본 메일 보내기 입니다.


대충 허접하게 만들어서 정식소스로 쓸려면 좀 수정, 보안이 필요할것 같긴하군요..


메일 작성하는 html 부분이라던지..


흠..파일 받는 멀티파트 부분이라던지...


그냥 이런 흐름으로 짰다는 정도만..참고하고 싶으시면 참고해보세요..


본 목적은 제 참고용이라..흐흐;;;