Різниця між вбудованими та звичайними вкладеннями
Це поширений випадок, коли повідомлення електронної пошти може містити вбудовані зображення в тілі, а також звичайні вкладення, пов’язані з ним. Використовуючи MailMessage клас, вбудовані вкладення можна витягти з LinkedResourceCollection клас, тоді як звичайні вкладення можна отримати/витягти за допомогою AttachmentCollection класу повідомлення. Однак це відрізняється, коли повідомлення завантажується за допомогою класу Aspose.Email.Mapi.MapiMessage, оскільки всі вбудовані зображення та звичайні вкладення доступні користувачеві в одному класі MapiAttachmentCollection. Тому потрібно розробити метод, який би розрізняв вбудоване та звичайне вкладення при використанні MapiMessage.
Використання Aspose.Email для розрізнення вбудованих та звичайних вкладень
У цій статті пояснюється, як розрізнити вбудовані вкладення від звичайних за допомогою MapiMessage. Щоб визначити цю різницю, враховується тип тіла MapiMessage наступним чином:
Тіло простого тексту: Повідомлення електронної пошти з типом тіла простий текст не потребують перевірки, оскільки всі вкладення в таких повідомленнях завжди є звичайними.
Тіло HTML: У випадку повідомлення з типом тіла HTML, вкладення повинно містити не лише властивість PR_ATTACH_FLAGS (0x37140003), а її значення має бути 0x00000004 для вбудованих вкладень. Якщо ця умова виконана, далі залежить від тегів PR_ATTACH_CONTENT_LOCATION та PR_ATTACH_CONTENT_ID для визначення характеру вкладення. Однак за відсутності тегу PR_ATTACH_FLAGS Mapi, вкладення перевіряється за властивістю PR_ATTACH_DISPOSITION (0x3716001F або 0x3716001E) для визначення типу вкладення.
Тіло RTF: Якщо тіло у форматі RTF, тоді всі OLE‑вкладення є вбудованими. Значення PR_ATTACH_METHOD для всіх OLE‑вкладень дорівнює 0x00000006.
Нижче наведений приклад коду демонструє, як програмно розрізняти вбудовані та звичайні вкладення. Функція IsInlineAttachment приймає вкладення та тип тіла повідомлення як вхідні параметри і повертає true, якщо вкладення є вбудованим.