Rozróżnianie załączników wbudowanych i zwykłych
Jest to powszechny scenariusz, gdy wiadomość e‑mail może zawierać obrazy wbudowane w treść oraz powiązane z nią zwykłe załączniki. Używając MailMessage klasa, załączniki wbudowane można wyodrębnić z LinkedResourceCollection klasa, natomiast zwykłe załączniki można uzyskać/wyodrębnić przy pomocy AttachmentCollection klasy wiadomości. Jednak jest to inne, gdy wiadomość jest ładowana przy użyciu klasy Aspose.Email.Mapi.MapiMessage, ponieważ wszystkie obrazy wbudowane i zwykłe załączniki są dostępne dla użytkownika w tej samej klasie MapiAttachmentCollection. Dlatego konieczne jest opracowanie metody, która potrafi rozróżnić załącznik wbudowany od zwykłego przy użyciu MapiMessage.
Użycie Aspose.Email do rozróżniania załączników wbudowanych i zwykłych
Ten artykuł wyjaśnia, jak rozróżnić załączniki wbudowane od zwykłych przy użyciu MapiMessage. Aby określić to rozróżnienie, brany jest pod uwagę typ treści MapiMessage w następujący sposób:
Treść zwykłego tekstu: Wiadomości e‑mail z typem treści plain text nie wymagają sprawdzania, ponieważ wszystkie załączniki w takich wiadomościach są zawsze zwykłymi załącznikami.
Treść HTML: W przypadku wiadomości z typem treści HTML, załącznik powinien nie tylko zawierać własność PR_ATTACH_FLAGS (0x37140003), ale także jego wartość powinna być równa 0x00000004 dla załączników wbudowanych. Jeśli ten warunek jest spełniony, dalsze określenie zależy od tagów PR_ATTACH_CONTENT_LOCATION i PR_ATTACH_CONTENT_ID. Jednak w przypadku braku tagu PR_ATTACH_FLAGS Mapi, załącznik jest sprawdzany pod kątem własności PR_ATTACH_DISPOSITION (0x3716001F lub 0x3716001E), aby określić typ załącznika.
Treść RTF: Jeśli treść jest w formacie RTF, wszystkie załączniki OLE są załącznikami wbudowanymi. Wartość PR_ATTACH_METHOD dla wszystkich załączników OLE wynosi 0x00000006.
Poniższy przykład kodu pokazuje, jak programowo rozróżniać załączniki wbudowane i zwykłe. Funkcja IsInlineAttachment przyjmuje jako parametry załącznik oraz typ treści wiadomości i zwraca true, jeśli załącznik jest wbudowany.