Đọc tệp MSG của Outlook bằng Java

MSG là định dạng tệp email được MS Outlook sử dụng. Nó là một mục Outlook cho phép lưu trữ email, danh bạ, tin nhắn, tác vụ, cuộc hẹn, v.v. Trong một số trường hợp nhất định, chúng ta có thể cần đọc các tệp Outlook MSG trong các ứng dụng Java và trích xuất các thuộc tính như chủ đề, người nhận, người gửi, nội dung, v.v. Trong bài viết này, chúng ta sẽ tìm hiểu cách đọc tệp Outlook MSG bằng Java.

Các chủ đề sau đây sẽ được đề cập trong bài viết này:

API Java để đọc tệp MSG của Outlook

Để đọc tệp Outlook MSG, chúng tôi sẽ sử dụng API Aspose.Email for Java. Nó cho phép tạo, gửi, đọc và thao tác email một cách liền mạch. Nó cũng hỗ trợ phân tích cú pháp các tệp Outlook MSG và cung cấp nội dung của chúng trong các đối tượng Java. Vui lòng tải xuống JAR của API hoặc chỉ cần thêm cấu hình pom.xml sau vào ứng dụng Java dựa trên Maven.

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>http://repository.aspose.com/repo/</url>
</repository>
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-email</artifactId>
    <version>22.2</version>
    <classifier>jdk16</classifier>
</dependency>

Phân tích và đọc tệp MSG Outlook bằng Java

Chúng tôi có thể phân tích cú pháp và đọc tệp Outlook MSG bằng cách thực hiện theo các bước được đưa ra bên dưới:

  1. Tải tệp MSG bằng phương thức MapiMessage.load().
  2. Đọc các thuộc tính như Tên người gửi, Chủ đề, Nội dung, Người nhận từ MSG đã tải.

Mẫu mã sau đây cho biết cách đọc tệp Outlook MSG bằng Java.

// Ví dụ mã này minh họa cách đọc tệp MSG.
// Tải tệp MSG từ đĩa
MapiMessage outlookMessageFile = MapiMessage.load("D:\\Files\\Email\\message.msg");

// Hiển thị tên người gửi
System.out.println("Sender Name : " + outlookMessageFile.getSenderName());

// Chủ đề hiển thị
System.out.println("Subject : " + outlookMessageFile.getSubject());

// Thân màn hình
System.out.println("Body : " + outlookMessageFile.getBody());

// Hiển thị thông tin người nhận
System.out.println("Recipients : \n");

// Lặp lại bộ sưu tập người nhận được liên kết với đối tượng MapiMessage
for (int i = 0; i < outlookMessageFile.getRecipients().size(); i++) {
  
  // Đặt tham chiếu đến đối tượng MapiRecipient
  MapiRecipient rcp = (MapiRecipient) outlookMessageFile.getRecipients().get_Item(i);
  
  // Hiển thị địa chỉ email người nhận
  System.out.println("Email : " + rcp.getEmailAddress());
  
  // Hiển thị tên người nhận
  System.out.println("Name : " + rcp.getDisplayName());
  
  // Hiển thị loại người nhận
  System.out.println("Recipient Type : " + rcp.getRecipientType());
}
Phân tích và đọc tệp MSG Outlook bằng Java.

Phân tích và đọc tệp MSG Outlook bằng Java.

Nhận tệp đính kèm từ tệp MSG bằng Java

Chúng tôi cũng có thể lưu tệp đính kèm từ tệp Outlook MSG bằng cách thực hiện theo các bước được đưa ra bên dưới:

  1. Tải tệp MSG bằng phương thức MapiMessage.load().
  2. Lặp lại bộ sưu tập tệp đính kèm được liên kết với đối tượng MapiMessage.
  3. Lưu từng phần đính kèm vào đĩa bằng phương thức save().

Mẫu mã sau đây cho biết cách lưu tệp đính kèm từ tệp Outlook MSG bằng Java.

// Ví dụ mã này trình bày cách lưu tệp đính kèm từ tệp MSG.
// Tải tệp MSG từ đĩa
MapiMessage outlookMessageFile = MapiMessage.load("D:\\Files\\Email\\WithEmbeddedMsg.msg");

// Lặp lại bộ sưu tập tệp đính kèm được liên kết với đối tượng MapiMessage
for (int i = 0; i < outlookMessageFile.getAttachments().size(); i++) {
  
  // Đặt tham chiếu đến đối tượng MapiAttachment
  MapiAttachment outlookMessageAttachment = (MapiAttachment) outlookMessageFile.getAttachments().get_Item(i);
  
  // Hiển thị loại tệp đính kèm
  System.out.println("Att Type : " + outlookMessageAttachment.getMimeTag());
  
  // Hiển thị tên file đính kèm
  System.out.println("File Name : " + outlookMessageAttachment.getLongFileName());
  
  // Lưu phần đính kèm vào đĩa
  outlookMessageAttachment.save("D:\\Files\\Email\\" + outlookMessageAttachment.getDisplayName());
}
Nhận tệp đính kèm từ tệp MSG bằng Java.

Nhận tệp đính kèm từ tệp MSG bằng Java.

Đọc tin nhắn nhúng từ tệp đính kèm

Chúng tôi cũng có thể đọc các email được nhúng trong tệp đính kèm MSG của Outlook bằng cách thực hiện theo các bước được đưa ra bên dưới:

  1. Tải tệp MSG bằng phương thức MapiMessage.load().
  2. Nhận tin nhắn đính kèm dưới dạng đối tượng MapiMessage.
  3. Hiển thị thuộc tính tin nhắn.

Mẫu mã sau đây cho biết cách đọc thư được nhúng dưới dạng tệp đính kèm bằng cách sử dụng Java.

// Ví dụ mã này trình bày cách đọc tin nhắn nhúng được đính kèm trong MSG.
// Tải tệp MSG
MapiMessage mapi = MapiMessage.load(dataDir + "EmbededMessageAsAttachment.msg");

// Hiển thị tổng số tệp đính kèm
System.out.println("Total attachments : " + mapi.getAttachments().size());

// Đọc tệp đính kèm dưới dạng MapiMessage
MapiMessage emb = mapi.getAttachments().get_Item(0).getObjectData().toMapiMessage();

// Hiển thị tên người gửi
System.out.println("Sender Name : " + emb.getSenderName());

// Chủ đề hiển thị
System.out.println("Subject : " + emb.getSubject());

// Thân màn hình
System.out.println("Body : " + emb.getBody());

// Hiển thị thông tin người nhận
System.out.println("Recipients :");

// Lặp lại bộ sưu tập người nhận được liên kết với đối tượng MapiMessage
for (int i = 0; i < emb.getRecipients().size(); i++) {
  
  // Đặt tham chiếu đến đối tượng MapiRecipient
  MapiRecipient rcp = (MapiRecipient) emb.getRecipients().get_Item(i);
  
  // Hiển thị địa chỉ email người nhận
  System.out.println("\t Email : " + rcp.getEmailAddress());
  
  // Hiển thị tên người nhận
  System.out.println("\t Name : " + rcp.getDisplayName());
  
  // Hiển thị loại người nhận
  System.out.println("\t Recipient Type : " + rcp.getRecipientType());
}

Nhận giấy phép miễn phí

Vui lòng dùng thử API không có giới hạn đánh giá bằng cách yêu cầu giấy phép tạm thời miễn phí.

Phần kết luận

Trong bài viết này, chúng ta đã học cách đọc nội dung của tệp Outlook MSG theo chương trình bằng Java. Hơn nữa, chúng ta đã thấy cách đọc và trích xuất tệp đính kèm từ tệp MSG. Ngoài ra, bạn có thể tìm hiểu thêm về Aspose.Email cho API Java bằng cách sử dụng tài liệu. Trong trường hợp có bất kỳ sự mơ hồ nào, vui lòng liên hệ với chúng tôi trên diễn đàn.

Xem thêm