[java] Javamail을 사용하여 첨부 파일 보내기

Javamail은 자바에서 이메일을 보내고 받을 수 있는 라이브러리입니다. 이를 사용하여 이메일에 첨부 파일을 보낼 수 있습니다. 이번 포스트에서는 Javamail을 사용하여 첨부 파일을 보내는 방법을 알아보겠습니다.

1. Javamail 라이브러리 추가하기

먼저 프로젝트에 Javamail 라이브러리를 추가해야 합니다. 다음 중 하나의 방법을 선택하여 라이브러리를 추가할 수 있습니다.

Maven을 사용하는 경우

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>
</dependency>

Gradle을 사용하는 경우

implementation 'javax.mail:mail:1.4.7'

2. 첨부 파일 보내기

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

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

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

        // 보내는 사람 및 받는 사람 설정
        String fromEmail = "your-email@gmail.com";
        String toEmail = "recipient@example.com";

        // 이메일 제목 및 내용 설정
        String subject = "첨부 파일 테스트";
        String body = "첨부 파일을 보내는 테스트입니다.";

        // 첨부 파일 경로 설정
        String attachmentPath = "/path/to/attachment.txt";
        
        // 첨부 파일을 읽어와서 MimeBodyPart 생성
        MimeBodyPart attachmentPart = new MimeBodyPart();
        attachmentPart.attachFile(attachmentPath);

        // 메시지 생성 및 첨부 파일 추가
        MimeMessage message = new MimeMessage(Session.getDefaultInstance(properties, new Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username, password);
            }
        }));
        message.setFrom(new InternetAddress(fromEmail));
        message.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmail));
        message.setSubject(subject);

        Multipart multipart = new MimeMultipart();
        multipart.addBodyPart(attachmentPart);
        message.setContent(multipart);

        // 이메일 보내기
        Transport.send(message);

        System.out.println("이메일이 성공적으로 보내졌습니다.");
    }
}

위 예제 코드는 Javamail을 사용하여 첨부 파일을 포함한 이메일을 보내는 예시입니다. 코드를 실행하면 지정한 이메일 주소로 이메일이 성공적으로 전송됩니다.

Javamail을 사용하여 첨부 파일을 보내는 방법에 대해 알아보았습니다. 이를 응용하여 필요한 프로젝트에 적용해 보시기 바랍니다.

참고 자료