Phân biệt giữa Tệp đính kèm Inline và Thường

Đây là một kịch bản phổ biến khi một tin nhắn email có thể chứa hình ảnh inline trong nội dung cũng như các tệp đính kèm thường đi kèm. Sử dụng MailMessage lớp, các tệp đính kèm inline có thể được giải nén từ LinkedResourceCollection lớp, trong khi các tệp đính kèm thường có thể được truy cập/giải nén bằng AttachmentCollection lớp của một tin nhắn. Tuy nhiên, điều này khác khi tin nhắn được tải bằng lớp Aspose.Email.Mapi.MapiMessage, vì tất cả các hình ảnh inline và tệp đính kèm thường đều có thể truy cập bởi người dùng trong cùng một lớp MapiAttachmentCollection. Do đó, cần thiết kế một phương pháp có thể phân biệt giữa tệp đính kèm inline và tệp đính kèm thường khi sử dụng MapiMessage.

Sử dụng Aspose.Email để phân biệt giữa Tệp đính kèm Inline và Thường

Bài viết này giải thích cách phân biệt tệp đính kèm inline và thường bằng cách sử dụng MapiMessage. Để xác định sự phân biệt này, loại nội dung của MapiMessage được xét như sau:

Nội dung Văn bản Thuần: Các email có loại nội dung văn bản thuần không cần kiểm tra, vì tất cả các tệp đính kèm trong những tin nhắn này luôn luôn là tệp đính kèm thường.

Nội dung Html: Trong trường hợp một tin nhắn có loại nội dung HTML, tệp đính kèm không chỉ cần chứa thuộc tính PR_ATTACH_FLAGS (0x37140003), mà giá trị của nó cũng phải bằng 0x00000004 cho tệp đính kèm inline. Nếu điều kiện này được đáp ứng, thì tiếp theo còn phụ thuộc vào các thẻ PR_ATTACH_CONTENT_LOCATION và PR_ATTACH_CONTENT_ID để xác định tính chất của tệp đính kèm. Tuy nhiên, nếu không có thẻ PR_ATTACH_FLAGS của Mapi, tệp đính kèm sẽ được kiểm tra thuộc tính PR_ATTACH_DISPOSITION (0x3716001F hoặc 0x3716001E) để xác định loại tệp đính kèm.

Nội dung Rtf: Nếu nội dung là RTF, thì tất cả các tệp đính kèm OLE đều là tệp đính kèm inline. Giá trị của PR_ATTACH_METHOD cho tất cả các tệp đính kèm OLE bằng 0x00000006.

Đoạn mã mẫu sau minh họa cách phân biệt một cách lập trình giữa tệp đính kèm inline và thường. Hàm IsInlineAttachment nhận một tệp đính kèm và Message BodyType làm tham số đầu vào và trả về true nếu tệp đính kèm là dạng Inline.