PST (Bảng lưu trữ cá nhân) là một định dạng tệp nổi tiếng được sử dụng cho mục đích lưu trữ bởi các chương trình Microsoft khác nhau như MS Outlook, Exchange và Windows Messaging. Tệp PST có thể lưu trữ tin nhắn, danh bạ và thông tin về các mục khác như lịch, sự kiện, v.v. Trong một số trường hợp, bạn có thể cần phân tích cú pháp tệp PST và trích xuất dữ liệu từ tệp đó theo chương trình. Để đạt được điều đó, bài viết này hướng dẫn cách đọc tệp Outlook PST trong Java. Với sự trợ giúp của các mẫu mã, bạn sẽ học cách trích xuất thông tin của các thư mục, đọc email và tìm nạp địa chỉ liên hệ từ tệp PST.
- API Java để đọc tệp Outlook PST
- Đọc tệp Outlook PST trong Java
- Đọc email từ tệp PST
- Trích xuất danh bạ từ tệp PST
Java API để xử lý tệp Outlook PST - Tải xuống miễn phí
Aspose.Email dành cho Java là một API xử lý email phổ biến và giàu tính năng để tạo và gửi email. Ngoài ra, nó cho phép bạn làm việc với các ứng dụng email khách và các định dạng tệp lưu trữ phổ biến. Trong bài viết này, chúng tôi sẽ sử dụng Aspose.Email for Java để đọc tin nhắn và thông tin khác từ các tệp PST. Bạn có thể tải xuống API hoặc cài đặt nó bằng cách sử dụng các cấu hình Maven sau.
Kho:
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>http://repository.aspose.com/repo/</url>
</repository>
Sự phụ thuộc:
<groupId>com.aspose</groupId>
<artifactId>aspose-email</artifactId>
<version>22.3</version>
<classifier>jdk16</classifier>
</dependency>
Đọc tệp Outlook PST trong Java
Sau đây là các bước để đọc tệp PST và trích xuất thông tin của nó trong Java.
- Tải tệp PST bằng phương thức PersonalStorage.fromFile().
- Lấy bộ sưu tập thư mục trong PST bằng phương pháp PersonalStorage.getRootFolders(). GetSubFolders().
- Truy xuất thông tin của các thư mục như tên, số lượng mục, v.v.
Mẫu mã sau đây cho thấy cách đọc tệp PST và tìm nạp thông tin của các thư mục trong Java.
// Tải tệp Outlook PST
PersonalStorage pst = PersonalStorage.fromFile("PersonalStorage.pst");
// Nhận thông tin thư mục
FolderInfoCollection folderInfoCollection = pst.getRootFolder().getSubFolders();
// Duyệt qua từng thư mục để hiển thị thông tin
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 đọc email từ PST
Sau đây là các bước để đọc email từ tệp PST trong Java.
- Tải tệp PST bằng phương thức PersonalStorage.fromFile().
- Truy cập thư mục gốc bằng phương pháp PersonalStorage.getRootFolder().
- Nhận tập hợp thư từ mỗi thư mục con bằng phương thức FolderInfo.getContents().
- Lặp lại các thư trong bộ sưu tập và đọc các trường của mỗi thư.
Mẫu mã sau đây cho thấy cách trích xuất thông báo từ tệp PST trong Java.
// Tải tệp Outlook PST
PersonalStorage pst = PersonalStorage.fromFile(path);
// Nhận Định dạng hiển thị của tệp PST
System.out.println("Display Format: " + pst.getFormat());
// Nhận thông tin thư mục và tin nhắn
FolderInfo folderInfo = pst.getRootFolder();
// Gọi phương thức đệ quy để trích xuất các tệp tin từ mỗi thư mục
extractMsgFiles(folderInfo, pst);
// Đây là một phương pháp đệ quy để hiển thị nội dung của một thư mục
private static void extractMsgFiles(FolderInfo folderInfo, PersonalStorage pst) {
// hiển thị tên thư mục
System.out.println("Folder: " + folderInfo.getDisplayName());
System.out.println("==================================");
// Lặp lại tất cả các thư trong thư mục này
MessageInfoCollection messageInfoCollection = folderInfo.getContents();
for (MessageInfo messageInfo : messageInfoCollection) {
System.out.println("Saving message {0} ...." + messageInfo.getSubject());
// Nhận thông báo trong phiên bản MapiMessage
MapiMessage message = pst.extractMessage(messageInfo);
// Lưu thông báo này vào đĩa ở định dạng tin nhắn
message.save(message.getSubject().replace(":", " ") + ".msg");
// Lưu tin nhắn này vào luồng ở định dạng tin nhắn
ByteArrayOutputStream messageStream = new ByteArrayOutputStream();
message.save(messageStream);
}
// Gọi phương thức này một cách đệ quy cho mỗi thư mục con
if (folderInfo.hasSubFolders() == true) {
for (FolderInfo subfolderInfo : folderInfo.getSubFolders()) {
extractMsgFiles(subfolderInfo, pst);
}
}
}
Đọc Danh bạ từ PST trong Java
Trong một số trường hợp nhất định, bạn có thể cần trích xuất thông tin của các liên hệ được lưu trữ trong tệp PST. Các bước sau đây cho biết cách truy cập danh bạ trong tệp PST bằng Java.
- Tải tệp PST bằng phương thức PersonalStorage.fromFile().
- Lấy tham chiếu của thư mục danh bạ bằng phương pháp PersonalStorage.getRootFolder(). GetSubFolder (“Danh bạ”).
- Nhận tập hợp các liên hệ bằng phương pháp FolderInfo.getContents().
- Lặp lại bộ sưu tập danh bạ và đọc từng số liên lạc hoặc lưu nó.
Mẫu mã sau đây cho thấy cách trích xuất danh bạ từ tệp PST trong Java.
// Tải tệp Outlook PST
PersonalStorage pst = PersonalStorage.fromFile("SampleContacts.pst");
// Tải thư mục Danh bạ
FolderInfo folderInfo = pst.getRootFolder().getSubFolder("Contacts");
// Lặp qua tất cả các địa chỉ liên hệ trong thư mục này
MessageInfoCollection messageInfoCollection = folderInfo.getContents();
for (int i = 0; i < messageInfoCollection.size(); i++) {
MessageInfo messageInfo = (MessageInfo) messageInfoCollection.get_Item(i);
// Nhận thông tin liên hệ
MapiContact contact = (MapiContact) pst.extractMessage(messageInfo).toMapiMessageItem();
// Hiển thị một số nội dung trên màn hình
System.out.println("Name: " + contact.getNameInfo().getDisplayName() + "\n");
// Lưu vào đĩa ở định dạng 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");
}
}
Java API để đọc tệp Outlook PST - Nhận giấy phép miễn phí
Bạn có thể dùng thử Aspose.Email for Java miễn phí bằng cách nhận giấy phép tạm thời.
Sự kết luận
Trong bài viết này, bạn đã học cách đọc các tệp PST theo chương trình trong Java. Hơn nữa, bạn đã thấy cách trích xuất thông tin thư mục, tìm nạp email và truy xuất danh bạ từ tệp PST trong Java. Ngoài ra, bạn có thể khám phá thêm về Aspose.Email for Java bằng tài liệu. Ngoài ra, trong trường hợp bạn có bất kỳ câu hỏi hoặc thắc mắc nào, vui lòng cho chúng tôi biết qua diễn đàn của chúng tôi.