Java에서 MS Outlook PST 파일 읽기

PST(Personal Storage Table)는 MS Outlook, Exchange 및 Windows Messaging과 같은 다양한 Microsoft 프로그램에서 저장 목적으로 사용되는 잘 알려진 파일 형식입니다. PST 파일은 메시지, 연락처 및 캘린더, 이벤트 등과 같은 다른 항목에 대한 정보를 저장할 수 있습니다. 어떤 경우에는 PST 파일을 구문 분석하고 프로그래밍 방식으로 데이터를 추출해야 할 수 있습니다. 이를 달성하기 위해 이 기사에서는 Java를 사용하여 MS Outlook PST 파일을 읽는 방법을 보여줍니다. 코드 샘플의 도움으로 폴더 정보를 추출하고 이메일을 읽고 PST 파일에서 연락처를 가져오는 방법을 배우게 됩니다.

Outlook PST 파일을 읽는 Java API

Aspose.Email for Java는 이메일 생성 및 전송을 위한 인기 있고 기능이 풍부한 이메일 처리 API입니다. 또한 널리 사용되는 이메일 클라이언트 및 저장 파일 형식으로 작업할 수 있습니다. 이 기사에서는 Java용 Aspose.Email을 사용하여 PST 파일에서 메시지 및 기타 정보를 읽습니다. API를 다운로드하거나 다음 Maven 구성을 사용하여 설치할 수 있습니다.

저장소:

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>http://repository.aspose.com/repo/</url>
</repository>

의존:

    <groupId>com.aspose</groupId>
    <artifactId>aspose-email</artifactId>
    <version>22.3</version>
    <classifier>jdk16</classifier>
</dependency>

Java에서 Outlook PST 파일 읽기

다음은 PST 파일을 읽고 정보를 추출하는 단계입니다.

다음 코드 샘플은 PST 파일을 읽고 폴더 정보를 가져오는 방법을 보여줍니다.

// Outlook PST 파일 로드
PersonalStorage pst = PersonalStorage.fromFile("PersonalStorage.pst");

// 폴더 정보 가져오기
FolderInfoCollection folderInfoCollection = pst.getRootFolder().getSubFolders();

// 각 폴더를 탐색하여 정보 표시
for (int i = 0; i < folderInfoCollection.size(); i++) {
	FolderInfo folderInfo = (FolderInfo) folderInfoCollection.get_Item(i);
	System.out.println("FolderId: " + folderInfo.getEntryIdString());
	System.out.println("Folder: " + folderInfo.getDisplayName());
	System.out.println("Total items: " + folderInfo.getContentCount());
	System.out.println("Total unread items: " + folderInfo.getContentUnreadCount());
	System.out.println("-----------------------------------");
}

Java의 PST 파일에서 이메일 읽기

다음은 Java의 PST 파일에서 이메일 메시지를 읽는 단계입니다.

다음 코드 샘플은 Java의 PST 파일에서 메시지를 추출하는 방법을 보여줍니다.

// Outlook PST 파일 로드
PersonalStorage pst = PersonalStorage.fromFile(path);

// PST 파일의 표시 형식 가져오기
System.out.println("Display Format: " + pst.getFormat());

// 폴더 및 메시지 정보 가져오기
FolderInfo folderInfo = pst.getRootFolder();

// 재귀 메서드를 호출하여 각 폴더에서 msg 파일을 추출합니다.
extractMsgFiles(folderInfo, pst);

// 이것은 폴더의 내용을 표시하는 재귀적 방법입니다.
private static void extractMsgFiles(FolderInfo folderInfo, PersonalStorage pst) {
    // 폴더 이름 표시
    System.out.println("Folder: " + folderInfo.getDisplayName());
    System.out.println("==================================");
    
    // 이 폴더의 모든 메시지를 반복합니다.
    MessageInfoCollection messageInfoCollection = folderInfo.getContents();
    
    for (MessageInfo messageInfo : messageInfoCollection) {
        System.out.println("Saving message {0} ...." + messageInfo.getSubject());
        
        // MapiMessage 인스턴스에서 메시지 가져오기
        MapiMessage message = pst.extractMessage(messageInfo);
        
        // 이 메시지를 msg 형식으로 디스크에 저장
        message.save(message.getSubject().replace(":", " ") + ".msg");
        
        // 이 메시지를 msg 형식으로 스트리밍하려면 저장하세요.
        ByteArrayOutputStream messageStream = new ByteArrayOutputStream();
        message.save(messageStream);
    }

    // 각 하위 폴더에 대해 이 메서드를 재귀적으로 호출합니다.
    if (folderInfo.hasSubFolders() == true) {
        for (FolderInfo subfolderInfo : folderInfo.getSubFolders()) {
            extractMsgFiles(subfolderInfo, pst);
        }
    }
}

Java의 PST 파일에서 연락처 추출

어떤 경우에는 PST 파일에 저장된 연락처 정보를 추출해야 할 수도 있습니다. 다음 단계는 Java에서 PST 파일의 연락처에 액세스하는 방법을 보여줍니다.

다음 코드 샘플은 Java의 PST 파일에서 연락처를 추출하는 방법을 보여줍니다.

// Outlook PST 파일 로드
PersonalStorage pst = PersonalStorage.fromFile("SampleContacts.pst");

// 연락처 폴더 가져오기
FolderInfo folderInfo = pst.getRootFolder().getSubFolder("Contacts");

// 이 폴더의 모든 연락처를 반복합니다.
MessageInfoCollection messageInfoCollection = folderInfo.getContents();

for (int i = 0; i < messageInfoCollection.size(); i++) {
	MessageInfo messageInfo = (MessageInfo) messageInfoCollection.get_Item(i);
	
  //  연락처 정보 얻기
	MapiContact contact = (MapiContact) pst.extractMessage(messageInfo).toMapiMessageItem();
	
  //  화면에 일부 콘텐츠 표시
	System.out.println("Name: " + contact.getNameInfo().getDisplayName() + "\n");
	
  //  MSG 형식으로 디스크에 저장
	if (contact.getNameInfo().getDisplayName() != null) {
		MapiMessage message = pst.extractMessage(messageInfo); // Get rid of illegal characters that cannot be used as a file name
		String messageName = message.getSubject().replace(":", " ").replace("\\", " ").replace("?", " ").replace("/", " ");
		message.save(messageName + ".msg");
	}
}

무료 API 라이선스 받기

임시 라이선스 받기를 통해 Java용 Aspose.Email을 무료로 사용해 볼 수 있습니다.

결론

이 기사에서는 Java에서 프로그래밍 방식으로 PST 파일을 읽는 방법을 배웠습니다. 또한 Java의 PST 파일에서 폴더 정보를 추출하고 이메일을 가져오고 연락처를 검색하는 방법을 살펴보았습니다. 또한 문서를 사용하여 Java용 Aspose.Email에 대해 자세히 알아볼 수 있습니다. 또한 질문이나 질문이 있는 경우 포럼을 통해 알려주십시오.

또한보십시오