본문으로 바로가기

Javax Mail 첨부파일

category Backend/Spring 2019. 9. 11. 12:37
반응형

Javax Mail 첨부파일



@Override
public boolean send(MailVO mail) {
    MimeMessage message = javaMailSender.createMimeMessage();
 
    try {
        message.setFrom(new InternetAddress(mail.getFrom()));
        message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(mail.getTo()));
        message.setSubject(mail.getSubject());
        
        MimeBodyPart messageBodyPart = new MimeBodyPart();

        Multipart multipart = new MimeMultipart();
        
        // 내용 추가
        messageBodyPart.setContent(mail.getText(), "text/html; charset=EUC-KR");
        multipart.addBodyPart(messageBodyPart);
 
        if(mail.getFilePathList().size() > 0) {
            for (int i=0; i<mail.getFilePathList().size(); i++) {
                // 파일 리스트에서 1개 꺼내어 파일경로를 넣은 File 객체 생성
                File file = new File(mail.getFilePathList().get(i).getFilePath());
                if(file.exists()) {
// 파일이 있다면?
        MimeBodyPart messageAttachPart = new MimeBodyPart();

                    // 파일경로를 소스에 추가
                    DataSource source = new FileDataSource(mail.getFilePathList().get(i).getFilePath());
         
                    // 바디 내용에 추가
                    messageAttachPart.setDataHandler(new DataHandler(source));
                    try {
                        // 첨부파일 이름 설정 및 한글 인코딩
                        messageAttachPart.setFileName(MimeUtility.encodeText(mail.getFilePathList().get(i).getOriginName()));
                    } catch (UnsupportedEncodingException e) {
                        e.printStackTrace();
                    }
                    // 만들어진 바디 부착
                    multipart.addBodyPart(messageAttachPart);
                }
            }
        }
        
        // 메시지 내용 추가
        message.setContent(multipart);
        javaMailSender.send(message);
        return true;
    }catch(MessagingException e) {
        e.printStackTrace();
    }
    return false;
}



반응형