메일 보내기 / mail / emaip / SMTP / gmail / 파일첨부 / file / 구글 / 전자정부프레임워크 | egovframework

2016.01.05 16:43framework/egovframework

 

 

전자정부프레임워크에서 제공해 주는 mail 서비스 중

파일첨부하여 메일 보내기 기능을 정리하였다.

 

 

 

※ 하루동안 보내기 횟수 제한과 첨부파일의 용량의 제한이 있을 것으로 예상되며

    정확한 정보는 찾지 못했다.

    서비스 구현단에서 직접 처리해야 할 것 같다.

 

 

maven 사용

jdk 1.6

eGovFramework 2.7

 

 

1. 메이븐 추가

<!-- egovframework.rte.util.mail -->
  <dependency>
   <groupId>org.apache.commons</groupId>
   <artifactId>commons-email</artifactId>
   <version>1.3.2</version>
  </dependency>
cs

 

 

2. main class 작성

public class MailSample {
 
 public static void main(String args[])  {
 
 
 
  MailVO mailVO = new MailVO();
  
  mailVO.setFilePath("D:\\xxxx.png");
  mailVO.setFileName("xxxx.png");
  mailVO.setFromMail("test@gmail.com");
  mailVO.setFromMailNm("나");
  mailVO.setMailMsg("내용입니다. test 입니다.");
  mailVO.setTitle("제목입니다.");
  
  MailUtil.mailSend(mailVO);
 
 
 }
 
}
cs

 

 

3. VO class 작성

 

public class MailVO {
 
 // SMTP 값들 (수정 불가)
 private String smtp = "smtp.gmail.com";
 private int smtpPort = 465;
 private String smtpEmail = "구글 계정";
 private String smtpEmailPw = "구글 계정 비밀번호";
 
 // 받는 사람 (수정 불가)
 private String[] addToMail = {"받는사람들"};
 
////////////////////////////////////////////////////////////////////////////// 
 
 // 메일 전송에 필요한 값들
 private String filePath; // 파일경로
 private String fileName; // 파일명
 private String description = "파일 설명"// 파일 설명
 
 private String title = "메일 제목."// 메일 제목
 private String fromMail; // 보내는 사람 메일 주소
 private String fromMailNm; // 보내는 사람
 private String mailMsg; // 메일 내용
 
 
 
 public String getTitle() {
  return title;
 }
 public void setTitle(String title) {
  this.title = title;
 }
 public String getDescription() {
  return description;
 }
 public void setDescription(String description) {
  this.description = description;
 }
 public String getFilePath() {
  return filePath;
 }
 public void setFilePath(String filePath) {
  this.filePath = filePath;
 }
 public String getFileName() {
  return fileName;
 }
 public void setFileName(String fileName) {
  this.fileName = fileName;
 }
 public String getFromMail() {
  return fromMail;
 }
 public void setFromMail(String fromMail) {
  this.fromMail = fromMail;
 }
 public String getFromMailNm() {
  return fromMailNm;
 }
 public void setFromMailNm(String fromMailNm) {
  this.fromMailNm = fromMailNm;
 }
 public String getMailMsg() {
  return mailMsg;
 }
 public void setMailMsg(String mailMsg) {
  this.mailMsg = mailMsg;
 }
 public String getSmtp() {
  return smtp;
 }
 public int getSmtpPort() {
  return smtpPort;
 }
 public String getSmtpEmail() {
  return smtpEmail;
 }
 public String getSmtpEmailPw() {
  return smtpEmailPw;
 }
 public String[] getAddToMail() {
  return addToMail;
 }
 
 
}
 
cs

 



 

4. 실행 class 작성

public class MailUtil {
 
 private static String MAIL_CHARSET = "euc-kr";
 
 /** 메일보내기
  * ItoCommunityVO 
  * 
  * @param itoCommunityVO
  * @return true : SUCCESS / false : FAIL
  */
 public static String mailSend(MailVO mailVO){
  
  String msg = "";
  
  
  String filePath = mailVO.getFilePath(); // 파일 경로
  String fileName = mailVO.getFileName(); // 파일명
  String description = mailVO.getDescription(); // 파일 설명
  
  String fromMail = mailVO.getFromMail(); // 보내느 사람
  String fromMailNm = mailVO.getFromMailNm(); // 보내는 사람 이름
  String title = mailVO.getTitle(); // 제목
  String[] addToMail = mailVO.getAddToMail();
  
  
  if(isEmpty(fromMail)){
   msg = "FAIL";
   return msg;
  }
  
  
  String mailMsg = ""// 메일 내용은 컨트롤러에서 만들어서 온다.
  mailMsg += mailVO.getMailMsg(); // 메일 내용
  
  
  
  try {
   // 기본 메일 정보를 생성합니다
   MultiPartEmail email = new MultiPartEmail();
      
   // 파일이 있는지 검사
   if(!isEmpty(filePath) && !isEmpty(fileName)){
    // 첨부할 attachment 정보를 생성합니다
    EmailAttachment attachment = new EmailAttachment();
    attachment.setPath(filePath); 
    attachment.setDisposition(EmailAttachment.ATTACHMENT);
    attachment.setDescription(description);
    attachment.setName(fileName); 
    
    // 생성한 attachment를 추가합니다
    email.attach(attachment);
   }
   
 
   
   email.setCharset(MAIL_CHARSET);// 한글 인코딩
   email.setFrom(fromMail, fromMailNm); // 보내는 사람
 
   email.addReplyTo(fromMail, fromMailNm); // 답장 받을 메일 설정
   email.setSubject(title); // 메일 제목
   email.setMsg(mailMsg); // 메일 내용
 
   email.addTo(addToMail); // 받는사람
   
   // 기본 메일 정보를 생성합니다 (SMTP서버의 기본정보를 셋팅)
   email.setHostName(mailVO.getSmtp());
   email.setSSL(true);
   email.setSmtpPort(mailVO.getSmtpPort());
 
   // SMTP Server 정보 (현재 구글 메일 SMTP 사용중
   email.setAuthentication(mailVO.getSmtpEmail(), mailVO.getSmtpEmailPw());
 
   // 메일을 전송합니다
   email.send();
   msg = "SUCCESS";
  } catch (EmailException e) {
   e.printStackTrace();
   msg = "FAIL";
  }
  
  return msg;
 }
 
 public static boolean isEmpty(String str) {
  return str == null || str.length() == 0;
 }
}
 
cs

 

상세한 내용 및 일반 메일, html 이메일 보내기, url 첨부 이메일 보내기는 출처를 참고

출처 : http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte2:fdl:mail#예제_sample_실행