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

이메일에서 첨부 파일을 해제하고 그 내용을 읽고 싶은 경우, Javamail 라이브러리를 사용할 수 있습니다. Javamail은 Java에서 이메일을 송수신하기 위해 사용되는 표준 라이브러리입니다.

1. 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>

Gradle을 사용하는 경우, build.gradle 파일에 다음 의존성을 추가하십시오:

implementation 'javax.mail:javax.mail-api:1.6.2'
implementation 'com.sun.mail:javax.mail:1.6.2'

2. 이메일에서 첨부 파일 해제하기

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Part;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMultipart;

public class EmailAttachmentExtractor {

    public static void main(String[] args) {
        // 이메일 메시지를 읽어온다고 가정한다.
        // ...
        Message emailMessage = // 이메일 메시지 가져오기

        try {
            Object content = emailMessage.getContent();
            if (content instanceof Multipart) {
                Multipart multiPart = (Multipart) content;
                int numberOfParts = multiPart.getCount();
                for (int partCount = 0; partCount < numberOfParts; partCount++) {
                    MimeBodyPart part = (MimeBodyPart) multiPart.getBodyPart(partCount);
                    if (Part.ATTACHMENT.equalsIgnoreCase(part.getDisposition())) {
                        // 첨부 파일 저장을 위한 경로를 지정한다.
                        String saveFilePath = // 첨부 파일 저장 경로
                        part.saveFile(saveFilePath);
                    }
                }
            }
        } catch (IOException | MessagingException e) {
            e.printStackTrace();
        }
    }
}

위의 예제 코드는 Javamail을 사용하여 이메일에서 첨부 파일을 해제하는 방법을 보여줍니다. javax.mail.internet.MimeMultipart를 사용하여 이메일의 본문과 첨부 파일을 구분하고 javax.mail.internet.MimeBodyPart를 사용하여 첨부 파일을 저장합니다.

결론

Javamail을 사용하여 이메일에서 첨부 파일을 해제하는 방법에 대해 배웠습니다. Javamail을 이용하면 간단하게 이메일 내의 첨부 파일을 처리할 수 있습니다. 자세한 내용은 Javamail 공식 문서를 참조하시기 바랍니다.