[java] Javamail을 사용하여 이메일에 첨부파일 저장하기

JavaMail은 Java 프로그램에서 이메일을 보내고 받을 수 있는 API입니다. 이메일에 파일을 첨부하는 작업은 많이 사용되는 기능 중 하나입니다. 이번 포스트에서는 JavaMail을 사용하여 이메일에 첨부파일을 저장하는 방법에 대해 알아보겠습니다.

1. Maven을 사용하여 JavaMail 라이브러리 의존성 추가하기

JavaMail을 사용하기 위해 먼저 Maven을 통해 필요한 라이브러리를 추가해야 합니다. 다음과 같이 pom.xml 파일에 아래의 의존성을 추가합니다.

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>javax.mail-api</artifactId>
    <version>1.6.2</version>
</dependency>
<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.6.2</version>
</dependency>

2. 첨부파일을 가진 이메일 전송하기

이제 JavaMail을 사용하여 첨부파일을 가진 이메일을 전송하는 코드를 작성해보겠습니다. 아래의 예제 코드를 참고해주세요.

import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
import java.io.*;

public class EmailAttachmentExample {

    public static void main(String[] args) {

        // 발신자, 수신자, 비밀번호 등 설정
        final String username = "your-email@gmail.com";
        final String password = "your-password";
        String fromEmail = "your-email@gmail.com";
        String toEmail = "recipient-email@gmail.com";

        // SMTP 서버 설정
        Properties props = new Properties();
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.smtp.port", "587");

        // 세션 생성
        Session session = Session.getInstance(props, new Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username, password);
            }
        });

        try {
            // 이메일 메시지 객체 생성
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress(fromEmail));
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(toEmail));
            message.setSubject("이메일 첨부파일 테스트");

            // 첨부파일 생성 및 추가
            MimeBodyPart attachmentPart = new MimeBodyPart();
            String filename = "file.txt";
            attachmentPart.attachFile(filename);
            Multipart multipart = new MimeMultipart();
            multipart.addBodyPart(attachmentPart);

            // 메일 본문 생성
            MimeBodyPart messageBodyPart = new MimeBodyPart();
            messageBodyPart.setText("첨부파일 테스트입니다.");
            multipart.addBodyPart(messageBodyPart);

            // 메시지에 첨부파일 추가
            message.setContent(multipart);

            // 이메일 전송
            Transport.send(message);

            System.out.println("이메일 전송 완료!");
        } catch (MessagingException | IOException e) {
            e.printStackTrace();
        }
    }
}

위의 예제 코드에서는 Gmail SMTP 서버를 사용하여 이메일을 전송하고 있습니다. SMTP 서버 설정은 사용하는 이메일 공급업체에 따라 다를 수 있습니다. 본인의 이메일 설정에 맞게 서버 주소와 포트를 수정해주세요.

3. 실행 결과 확인하기

위의 예제 코드를 실행하면 file.txt 파일이 첨부된 이메일이 수신자에게 전송됩니다. 첨부파일이 있는 이메일을 받은 후 첨부파일을 열어 확인해보세요.

참고 자료

이제 JavaMail을 사용하여 이메일에 첨부파일을 저장하는 방법을 알게 되었습니다. 이를 활용하여 효율적인 이메일 기능을 구현해보세요.