른록노트

[JAVA] 메일 발송, 파일 전송(base 64) 본문

Programming/[Java]

[JAVA] 메일 발송, 파일 전송(base 64)

른록 2020. 2. 18. 10:42

@lib

javax.mail-1.1.7.jar

 

@방법

Properties p = Sysstem.getProperties();
p.put("mail.smtp.host", host);
p.put("mail.smtp.port", port);
p.put("mail.smtp.auth", "true"); //host smtp 서버의 설정에 따라 다름
p.put("mail.smtp.ssl.enable", "true"); //host smtp 서버의 설정에 따라 다름
p.put("mail.smtp.ssl.trust", host);

Session session = Session.getDefaultInstance(p, new javax.mail.Authenticator(){
 Protected PasswordAuthentication getPasswordAuthentication(){
  return new PasswordAuthentication(id,pass);
 }
});

try{
 MimeMessage message = new MimeMessage(session);
 message.setFrom(new InternetAddress(id));
 String addrArr = mailTo.replaceAll(";",",");
 Address[] parse = InternetAddress.parse(addrArr);
 message.setSentDate(new Date());
 message.setHeader("Content-Type","text/html");
 message.setRecipients(Message.RecipientType.TO, parse);
 message.setSubject(subject,"UTF-8");
 if("".equals(fileName) || fileName == null){
  //첨부파일 없을 경우
  message.setText(content,"UTF-8");

//message.setContent(html, "text/html; charset=utf-8");  태그포함 html 문서 메일로 전송
 }else{
  //첨부파일 있을 경우 (base64)
  BodyPart body = new MimeBodyPart();
  BodyPart attachment = new PreencodedMimeBodyPart("base64");
  attachment.setFileName(MimeUtility.encodeText(fileName, "euc-kr","B")); //한글 파일명 처리
  attachment.setText(fileContent);  
  body.setText(content); //일반텍스트

//body.setContent(html, "text/html; charset=utf-8");  태그포함 html 문서 메일로 전송
  MimeMultipart multipart = new MimeMultipart();
  multipart.addBodyPart(body);
  multipart.addBodyPart(attachment);
  message.setContent(multipart, "text/plain; charset=UTF-8");
 }
 Transport.send(message);
}catch(Exception e){
 e.printStackTrace();
}

@참고사이트

https://www.codota.com/code/java/methods/javax.mail.internet.MimeBodyPart/setContent

https://dualist.tistory.com/89

반응형
Comments