Membedakan antara Lampiran Inline dan Reguler

Ini adalah skenario umum ketika sebuah pesan email dapat berisi gambar inline dalam body-nya serta lampiran reguler yang terkait dengannya. Menggunakan MailMessage kelas, lampiran inline dapat diekstrak dari LinkedResourceCollection kelas, sementara lampiran reguler dapat diakses/ekstrak dengan AttachmentCollection kelas dari sebuah pesan. Namun, ini berbeda ketika pesan dimuat menggunakan kelas Aspose.Email.Mapi.MapiMessage, karena semua gambar inline dan lampiran reguler dapat diakses oleh pengguna dalam kelas MapiAttachmentCollection yang sama. Oleh karena itu, diperlukan metode yang dapat membedakan antara lampiran inline dan reguler ketika MapiMessage digunakan.

Menggunakan Aspose.Email untuk Membedakan antara Lampiran Inline dan Reguler

Artikel ini menjelaskan cara membedakan lampiran inline dari yang reguler menggunakan MapiMessage. Untuk menentukan perbedaan ini, tipe body MapiMessage dipertimbangkan sebagai berikut:

Body Teks Biasa: Pesan email dengan tipe body teks biasa tidak perlu diperiksa, karena semua lampiran dalam pesan tersebut selalu merupakan lampiran reguler.

Body Html: Pada kasus pesan dengan tipe body HTML, lampiran tidak hanya harus mengandung properti PR_ATTACH_FLAGS (0x37140003), tetapi nilainya juga harus sama dengan 0x00000004 untuk lampiran inline. Jika kondisi ini terpenuhi, maka selanjutnya bergantung pada tag PR_ATTACH_CONTENT_LOCATION dan PR_ATTACH_CONTENT_ID untuk menentukan sifat lampiran. Namun, jika tag Mapi PR_ATTACH_FLAGS tidak ada, lampiran diperiksa dengan properti PR_ATTACH_DISPOSITION (0x3716001F atau 0x3716001E) untuk menentukan tipe lampiran.

Body Rtf: Jika body berupa RTF, maka semua lampiran OLE adalah lampiran inline. Nilai PR_ATTACH_METHOD untuk semua lampiran OLE sama dengan 0x00000006.

Contoh kode berikut menunjukkan cara secara programatis membedakan antara lampiran inline dan reguler. Fungsi IsInlineAttachment mengambil sebuah lampiran dan BodyType Pesan sebagai parameter input dan mengembalikan true jika lampiran tersebut adalah lampiran Inline.