Rozlišení mezi vloženými a běžnými přílohami

Je běžný scénář, kdy e‑mailová zpráva může obsahovat vložené obrázky v těle i běžné přílohy s ní spojené. Používáním MailMessage třída, vložené přílohy lze extrahovat z LinkedResourceCollection třída, zatímco běžné přílohy lze získat/vytáhnout pomocí AttachmentCollection třída zprávy. To však platí jinak, když je zpráva načtena pomocí třídy Aspose.Email.Mapi.MapiMessage, protože všechny vložené obrázky a běžné přílohy jsou přístupné uživateli ve stejné třídě MapiAttachmentCollection. Proto je třeba vytvořit metodu, která dokáže rozlišit mezi vloženou a běžnou přílohou při použití MapiMessage.

Použití Aspose.Email k rozlišení mezi vloženými a běžnými přílohami

Tento článek vysvětluje, jak rozlišovat vložené přílohy od běžných pomocí MapiMessage. Pro určení tohoto rozlišení se bere v úvahu typ těla MapiMessage následovně:

Plain Text tělo: E‑mailové zprávy s typem těla prostý text nemusí být kontrolovány, protože všechny přílohy v takových zprávách jsou vždy běžné přílohy.

HTML tělo: V případě zprávy s typem těla HTML by příloha měla nejen obsahovat vlastnost PR_ATTACH_FLAGS (0x37140003), ale její hodnota by měla být 0x00000004 pro vložené (inline) přílohy. Pokud je tato podmínka splněna, dále záleží na značkách PR_ATTACH_CONTENT_LOCATION a PR_ATTACH_CONTENT_ID k určení povahy přílohy. V případě absence MAPI značky PR_ATTACH_FLAGS se příloha kontroluje pomocí vlastnosti PR_ATTACH_DISPOSITION (0x3716001F nebo 0x3716001E) pro určení typu přílohy.

Rtf tělo: Pokud je tělo RTF, jsou všechny OLE přílohy vložené (inline). Hodnota PR_ATTACH_METHOD pro všechny OLE přílohy je 0x00000006.

Následující ukázka kódu demonstruje, jak programově rozlišit mezi vloženými a běžnými přílohami. Funkce IsInlineAttachment přijímá přílohu a typ těla zprávy jako vstupní parametry a vrací true, pokud je příloha vložená (inline).