อ่านไฟล์ Outlook PST, ดึงข้อมูลโฟลเดอร์และโฟลเดอร์ย่อย
Aspose.Email สำหรับ .NET มี API สำหรับอ่านไฟล์ Microsoft Outlook PST. คุณสามารถโหลดไฟล์ PST จากดิสก์หรือสตรีมเข้าไปยังอินสแตนซ์ของ PersonalStorage คลาสเพื่อเข้าถึงข้อมูลรายละเอียดของเนื้อหา เช่น โฟลเดอร์, โฟลเดอร์ย่อย, และข้อความ. นอกจากนี้ API ยังให้ความสามารถในการรวม โฟลเดอร์ค้นหา เมื่อดึงข้อความจากโฟลเดอร์ PST.
การโหลดไฟล์ PST
ไฟล์ Outlook PST สามารถโหลดในอินสแตนซ์ของ PersonalStorage คลาส. โค้ดตัวอย่างต่อไปนี้จะแสดงวิธีโหลดไฟล์ PST.
การแสดงข้อมูล PST
หลังจาก การโหลดไฟล์ PST, คุณสามารถรับข้อมูลเกี่ยวกับชื่อไฟล์, โฟลเดอร์ราก, โฟลเดอร์ย่อยและจำนวนข้อความ. โค้ดตัวอย่างต่อไปนี้จะแสดงวิธีแสดงชื่อไฟล์ PST, โฟลเดอร์และจำนวนข้อความในแต่ละโฟลเดอร์:
ดึงโฟลเดอร์ที่ผู้ใช้สร้างเท่านั้น
ไฟล์ PST/OST อาจมีโฟลเดอร์ที่ผู้ใช้สร้าง, กล่าวคือยกเว้นโฟลเดอร์ IPM มาตรฐานทั้งหมด. Aspose.Email มีฟังก์ชันเพื่อเข้าถึงเฉพาะโฟลเดอร์ที่ผู้ใช้สร้างโดยใช้คุณสมบัติ only_folders_created_by_user ของ PersonalStorageQueryBuilder คลาส. คุณสามารถตั้งค่าคุณสมบัตินี้เป็น True เพื่อดึงเฉพาะโฟลเดอร์ที่ผู้ใช้สร้าง. โค้ดตัวอย่างต่อไปนี้แสดงวิธีใช้คุณสมบัติ only_folders_created_by_user ในโครงการของคุณ:
import aspose.email as ae
pst = ae.storage.pst.PersonalStorage.from_file("my.pst")
query_builder = ae.storage.pst.PersonalStorageQueryBuilder()
query_builder.only_folders_created_by_user.equals(True)
folders = pst.root_folder.get_sub_folders(query_builder.get_query())
for folder in folders:
print(f"Folder: {folder.display_name}")
การระบุโฟลเดอร์ที่กำหนดล่วงหน้า
เพื่อตรวจสอบว่าโฟลเดอร์ในไฟล์ PST เป็นโฟลเดอร์มาตรฐานหรือไม่, ใช้เมธอด get_predefined_type ของ FolderInfo คลาส. โฟลเดอร์มาตรฐาน (หรือโฟลเดอร์ที่กำหนดล่วงหน้า), ตรงกันข้ามกับโฟลเดอร์ที่ผู้ใช้สร้าง, คือโฟลเดอร์ที่ Outlook สร้างขึ้นเมื่อคุณเพิ่มบัญชีอีเมล เช่น Inbox, Sent Items, Drafts, Deleted Items, Calendar, Tasks, Notes เป็นต้น.
ตัวอย่างโค้ดด้านล่างแสดงวิธีใช้เมธอดนี้ในโครงการ. หากตั้งค่าเป็น True, จะคืนค่าประเภทที่กำหนดล่วงหน้าสำหรับโฟลเดอร์พาเรนท์ระดับบนสุด. สิ่งนี้กำหนดว่าโฟลเดอร์ปัจจุบันเป็นโฟลเดอร์ย่อยของโฟลเดอร์ที่กำหนดล่วงหน้าหรือไม่. หากตั้งค่าเป็น False, จะคืนค่าประเภทที่กำหนดล่วงหน้าสำหรับโฟลเดอร์ปัจจุบัน.
import aspose.email as ae
pst = ae.storage.pst.PersonalStorage.from_file("my.pst")
folders = pst.root_folder.get_sub_folders()
for folder in folders:
print(f"Folder: {folder.display_name}")
print(f"Is predefined: {folder.get_predefined_type(False) != ae.storage.pst.StandardIpmFolder.UNSPECIFIED}")
print("-----------------------------------")
การจัดการ RSS Feeds ใน PersonalStorage
Aspose.Email มีฟังก์ชันเพื่อดึงอ้างอิงถึงโฟลเดอร์ RSS Feeds ที่กำหนดล่วงหน้า, ให้ผู้พัฒนาสามารถเข้าถึงและจัดการ RSS feeds ที่เก็บอยู่ในไฟล์ Outlook PST ผ่านโปรแกรมได้. โดยการได้รับอ้างอิงถึง "โฟลเดอร์ RSS Feeds" นี้, ผู้พัฒนาสามารถทำงานกับข้อมูล RSS feed ซึ่งอาจรวมถึงการสมัครรับฟีดใหม่, การอัปเดตฟีดที่มีอยู่, หรือการดึงข้อมูลจากฟีด.
ค่าของ RssFeeds ใน StandardIpmFolder enum มักจะเป็นตัวแทนประเภทโฟลเดอร์ที่กำหนดล่วงหน้าซึ่งออกแบบมาสำหรับจัดเก็บ RSS feeds ภายในไฟล์ Outlook PST. โดยใช้ค่า enum นี้ นักพัฒนาสามารถระบุและโต้ตอบกับ "โฟลเดอร์ RSS Feeds" ผ่านโปรแกรมได้. ตัวอย่างโค้ดต่อไปนี้จะแสดงวิธีการนำคุณลักษณะนี้ไปใช้ในโครงการของคุณ:
import aspose.email as ae
pst = ae.storage.pst.PersonalStorage.from_file("my.pst")
rss_folder = pst.get_predefined_folder(ae.storage.pst.StandardIpmFolder.RSS_FEEDS)
เพื่อ เพิ่มโฟลเดอร์ RSS Feeds, ใช้โค้ดตัวอย่างต่อไปนี้:
import aspose.email as ae
pst = ae.storage.pst.PersonalStorage.from_file("my.pst")
rss_folder = pst.create_predefined_folder("RSS Feeds", ae.storage.pst.StandardIpmFolder.RSS_FEEDS)
การแยกวิเคราะห์โฟลเดอร์ที่ค้นหาได้
Aspose.Email มี FolderKind enumeration เพื่อทำงานกับประเภทต่างๆ ของโฟลเดอร์ PST. นอกจากโฟลเดอร์ NORMAL แล้ว ยังทำงานกับโฟลเดอร์ SEARCH. โฟลเดอร์ SEARCH คือโฟลเดอร์เสมือนที่แสดงรายการอีเมลทั้งหมดที่ตรงตามเงื่อนไขการค้นหาเฉพาะ. เพื่อแยกวิเคราะห์โฟลเดอร์ SEARCH, ใช้โค้ดตัวอย่างต่อไปนี้:
import aspose.email as ae
pst = ae.storage.pst.PersonalStorage.from_file("my.pst")
folders = pst.root_folder.get_sub_folders(ae.storage.pst.FolderKind.SEARCH | ae.storage.pst.FolderKind.NORMAL)
# Browse through each folder to display folder name and number of messages
for folder in folders:
print(f"Folder: {folder.display_name}")
sub_folders = folder.get_sub_folders(ae.storage.pst.FolderKind.SEARCH | ae.storage.pst.FolderKind.NORMAL)
for sub_folder in sub_folders:
print(f"Sub-folder: {folder.display_name}")
การดึงข้อมูลโฟลเดอร์พาเรนท์
โค้ดสแนปชอตต่อไปนี้แสดงวิธีดึงข้อมูลโฟลเดอร์แม่จาก MessageInfo.
การดึงโฟลเดอร์ย่อยของ PST ตามเส้นทาง
เพื่ดึงโฟลเดอร์ย่อยของ PST ตามเส้นทาง, ใช้เมธอด get_sub_folder ของ FolderInfo คลาส. มันดึงโฟลเดอร์ย่อยเฉพาะจากไดเรกทอรีหรือระบบไฟล์.
เมธอดรับพารามิเตอร์ต่อไปนี้:
-
name - แสดงถึงชื่อของโฟลเดอร์ย่อยที่ต้องการดึง. ใช้ระบุชื่อหรือรหัสของโฟลเดอร์ย่อยที่เมธอดจะค้นหา.
-
ignore_case - เป็นค่า boolean ที่กำหนดว่ามethod ควรละเว้นความแตกต่างของตัวพิมพ์ใหญ่/เล็กเมื่อเปรียบเทียบชื่อโฟลเดอร์ย่อยหรือไม่. หากตั้งค่าเป็น True, เมธอดจะถือว่าชื่อที่ตรงกันโดยไม่สนใจตัวพิมพ์ (เช่น "folder" และ "Folder" จะถือว่าเท่ากัน). หากตั้งค่าเป็น False, เมธอดจะทำการเปรียบเทียบแบบคำนึงถึงตัวพิมพ์.
-
handle_path_separator - เป็นค่า boolean ที่ระบุว่ามethod ควรจัดการตัวคั่นเส้นทางเมื่อค้นหาโฟลเดอร์ย่อยหรือไม่. ตัวคั่นเส้นทางเป็นอักขระที่ใช้แยกโฟลเดอร์ในพาธไดเรกทอรี (เช่น "\" ใน Windows หรือ "/" ใน Unix). หากตั้งค่าเป็น True, เมธอดจะจัดการตัวคั่นเส้นทางโดยอัตโนมัติ, ทำให้การจับคู่โฟลเดอร์ถูกต้อง. หากตั้งค่าเป็น False, จะพิจารณาตัวคั่นเส้นทางเป็นส่วนหนึ่งของชื่อโฟลเดอร์ย่อย, ทำให้การค้นหาต่างกัน.
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีดึงโฟลเดอร์ย่อยของ PST ตามเส้นทาง:
import aspose.email as ae
pst = ae.storage.pst.PersonalStorage.from_file("my.pst")
# In this sample, the method will return a ‘Jan’ named folder
# that is located at the Inbox\Reports\ path
# relative to the root folder.
folder = pst.root_folder.get_sub_folder("Inbox\Reports\Jan", True, True)