[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 공식 문서를 참조하시기 바랍니다.