Skilja mellan inbäddade och vanliga bilagor
Det är ett vanligt scenario när ett e‑postmeddelande kan innehålla inbäddade bilder i kroppen samt vanliga bilagor associerade med det. Genom att använda MailMessage klassen, kan inbäddade bilagor extraheras från LinkedResourceCollection klassen, medan de vanliga bilagorna kan nås/utextraheras med AttachmentCollection klassen för ett meddelande. Detta är dock annorlunda när meddelandet läses in med klassen Aspose.Email.Mapi.MapiMessage, eftersom alla inbäddade bilder och vanliga bilagor är tillgängliga för användaren i samma MapiAttachmentCollection‑klass. Därför behövs en metod som kan skilja mellan en inbäddad och en vanlig bilaga när MapiMessage används.
Använda Aspose.Email för att skilja mellan inbäddade och vanliga bilagor
Denna artikel förklarar hur man skiljer inbäddade bilagor från vanliga med hjälp av MapiMessage. För att avgöra denna skillnad beaktas MapiMessage‑kroppstypen enligt följande:
Vanlig text‑kropp: E‑postmeddelanden med vanlig text‑kroppstyp behöver inte kontrolleras, eftersom alla bilagor i sådana meddelanden alltid är vanliga bilagor.
Html‑kropp: För ett meddelande med HTML‑kroppstyp ska bilagan inte bara innehålla PR_ATTACH_FLAGS (0x37140003), utan också ha värdet 0x00000004 för inbäddade bilagor. Om detta villkor uppfylls beror det vidare på PR_ATTACH_CONTENT_LOCATION‑ och PR_ATTACH_CONTENT_ID‑taggarna för att bestämma bilagans natur. Om PR_ATTACH_FLAGS‑Mapi‑taggen saknas kontrolleras bilagan för PR_ATTACH_DISPOSITION (0x3716001F eller 0x3716001E) för att fastställa bilagans typ.
Rtf‑kropp: Om kroppen är RTF, är alla OLE‑bilagor inbäddade bilagor. Värdet på PR_ATTACH_METHOD för alla OLE‑bilagor är 0x00000006.
Följande kodexempel demonstrerar hur man programatiskt skiljer mellan inbäddade och vanliga bilagor. Funktionen IsInlineAttachment tar en bilaga och meddelandekroppstyp som inparametrar och returnerar true om bilagan är en inbäddad bilaga.