อ่านไฟล์ MS Outlook PST ใน Java

PST (ตารางที่เก็บข้อมูลส่วนตัว) เป็นรูปแบบไฟล์ที่รู้จักกันดีซึ่งใช้สำหรับจุดประสงค์ในการจัดเก็บโดยโปรแกรมต่างๆ ของ Microsoft เช่น MS Outlook, Exchange และ Windows Messaging ไฟล์ PST สามารถจัดเก็บข้อความ รายชื่อติดต่อ และข้อมูลเกี่ยวกับรายการอื่นๆ เช่น ปฏิทิน กิจกรรม ฯลฯ ในบางกรณี คุณอาจต้องแยกวิเคราะห์ไฟล์ PST และแยกข้อมูลจากไฟล์นั้นโดยใช้โปรแกรม บทความนี้จึงแสดงวิธีอ่านไฟล์ Outlook PST ใน Java ด้วยความช่วยเหลือจากตัวอย่างโค้ด คุณจะได้เรียนรู้วิธีดึงข้อมูลของโฟลเดอร์ อ่านอีเมล และดึงข้อมูลผู้ติดต่อจากไฟล์ PST

Java API เพื่อประมวลผลไฟล์ Outlook PST - ดาวน์โหลดฟรี

Aspose.Email for Java เป็น API การประมวลผลอีเมลที่ได้รับความนิยมและมีคุณลักษณะหลากหลายสำหรับการสร้างและส่งอีเมล นอกจากนี้ยังช่วยให้คุณทำงานกับไคลเอนต์อีเมลยอดนิยมและรูปแบบไฟล์ที่เก็บข้อมูล ในบทความนี้ เราจะใช้ Aspose.Email for Java เพื่ออ่านข้อความและข้อมูลอื่นๆ จากไฟล์ 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>

อ่านไฟล์ Outlook PST ใน Java

ต่อไปนี้เป็นขั้นตอนในการอ่านไฟล์ PST และแตกข้อมูลใน Java

  • โหลดไฟล์ PST โดยใช้วิธี PersonalStorage.fromFile()
  • รับคอลเลกชันโฟลเดอร์ใน PST โดยใช้วิธี PersonalStorage.getRootFolders().getSubFolders()
  • ดึงข้อมูลของโฟลเดอร์ เช่น ชื่อ จำนวนรายการ เป็นต้น

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการอ่านไฟล์ PST และดึงข้อมูลโฟลเดอร์ใน Java

// โหลดไฟล์ 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

ต่อไปนี้เป็นขั้นตอนในการอ่านข้อความอีเมลจากไฟล์ PST ใน Java

  • โหลดไฟล์ PST โดยใช้วิธี PersonalStorage.fromFile()
  • เข้าถึงโฟลเดอร์รูทโดยใช้เมธอด PersonalStorage.getRootFolder()
  • รับการรวบรวมข้อความจากแต่ละโฟลเดอร์ย่อยโดยใช้เมธอด FolderInfo.getContents()
  • วนซ้ำข้อความในคอลเลกชั่นและอ่านฟิลด์ของแต่ละข้อความ

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีแยกข้อความจากไฟล์ PST ใน Java

// โหลดไฟล์ 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);
        }
    }
}

อ่านผู้ติดต่อจาก PST ใน Java

ในบางกรณี คุณอาจต้องแยกข้อมูลผู้ติดต่อที่จัดเก็บไว้ในไฟล์ PST ขั้นตอนต่อไปนี้แสดงวิธีการเข้าถึงผู้ติดต่อในไฟล์ PST ใน Java

  • โหลดไฟล์ PST โดยใช้วิธี PersonalStorage.fromFile()
  • รับการอ้างอิงของโฟลเดอร์ผู้ติดต่อโดยใช้เมธอด PersonalStorage.getRootFolder().getSubFolder(“Contacts”)
  • รับคอลเลคชันผู้ติดต่อโดยใช้เมธอด FolderInfo.getContents()
  • วนซ้ำคอลเล็กชันรายชื่อติดต่อและอ่านรายชื่อติดต่อแต่ละรายการหรือบันทึก

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการแยกผู้ติดต่อจากไฟล์ PST ใน Java

// โหลดไฟล์ 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");
	
  //  บันทึกลงดิสก์ในรูปแบบผงชูรส
	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");
	}
}

Java API เพื่ออ่านไฟล์ Outlook PST - รับใบอนุญาตฟรี

คุณสามารถลองใช้ Aspose.Email for Java ได้ฟรีโดย ขอรับใบอนุญาตชั่วคราว

บทสรุป

ในบทความนี้ คุณได้เรียนรู้วิธีการอ่านไฟล์ PST โดยทางโปรแกรมใน Java นอกจากนี้ คุณได้เห็นวิธีแยกข้อมูลโฟลเดอร์ ดึงข้อมูลอีเมล และเรียกข้อมูลผู้ติดต่อจากไฟล์ PST ใน Java นอกจากนี้ คุณสามารถสำรวจเพิ่มเติมเกี่ยวกับ Aspose.Email for Java โดยใช้ เอกสารประกอบ นอกจากนี้ ในกรณีที่คุณมีคำถามหรือข้อสงสัยใดๆ โปรดแจ้งให้เราทราบผ่านทาง ฟอรัม

ดูสิ่งนี้ด้วย