[java] Javamail을 사용하여 이메일에 특정 파일 타입 첨부하기

이메일에 파일을 첨부하는 것은 JavaMail API를 사용하는 것이 간단하고 효과적입니다. 이 예제에서는 Javamail을 사용하여 이메일에 특정 파일 타입을 첨부하는 방법을 알려드리겠습니다.

먼저, 필요한 라이브러리를 의존성으로 추가해야 합니다. Maven을 사용한다면 pom.xml 파일에 다음 코드를 추가하세요:

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

이제 첨부할 파일과 이메일을 보낼 수신자의 정보를 준비해야 합니다. 다음은 예제 코드입니다:

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.util.Properties;

public class EmailAttachmentExample {
    public static void main(String[] args) {
        // SMTP 서버 설정
        Properties props = new Properties();
        props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.smtp.port", "587");
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");

        // 이메일 발신자 정보
        final String username = "your-email@gmail.com";
        final String password = "your-password";

        // 이메일 수신자 정보
        String toAddress = "recipient-email@example.com";

        // 첨부 파일 경로
        String filePath = "path-to-your-file.txt";

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

        try {
            // MimeMessage 생성
            Message message = new MimeMessage(session);

            // 발신자 설정
            message.setFrom(new InternetAddress(username));

            // 수신자 설정
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(toAddress));

            // 메일 제목 설정
            message.setSubject("이메일 첨부파일 테스트");

            // 첨부 파일 생성
            MimeBodyPart attachmentBodyPart = new MimeBodyPart();
            FileDataSource fileDataSource = new FileDataSource(filePath);
            attachmentBodyPart.setDataHandler(new DataHandler(fileDataSource));
            attachmentBodyPart.setFileName(fileDataSource.getName());

            // 메일 내용 생성
            MimeBodyPart textBodyPart = new MimeBodyPart();
            textBodyPart.setText("이메일에 첨부된 파일입니다.");

            // MimeMultipart 생성 및 첨부 파일, 텍스트 내용 추가
            MimeMultipart multipart = new MimeMultipart();
            multipart.addBodyPart(attachmentBodyPart);
            multipart.addBodyPart(textBodyPart);

            // 메시지에 Multipart 객체 추가
            message.setContent(multipart);

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

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

위의 예제 코드에서는 Gmail SMTP 서버를 사용하여 이메일을 보내고 있습니다. 필요에 따라 SMTP 서버 호스트 및 포트를 변경하여 다른 서비스를 사용할 수 있습니다.

이제 위의 코드를 실행하면 지정된 경로의 파일이 첨부된 이메일이 수신자에게 전송됩니다.