Differenziare tra Allegati Inline e Regolari

È uno scenario comune quando un messaggio email può contenere immagini inline nel suo corpo così come allegati regolari associati. Usando MailMessage classe, gli allegati inline possono essere estratti dal LinkedResourceCollection classe, mentre gli allegati regolari possono essere accessi/estratti con il AttachmentCollection classe di un messaggio. Tuttavia, è diverso quando il messaggio viene caricato usando la classe Aspose.Email.Mapi.MapiMessage, poiché tutte le immagini inline e gli allegati regolari sono accessibili all’utente nella stessa classe MapiAttachmentCollection. Pertanto, è necessario ideare un metodo che possa differenziare tra un allegato inline e uno regolare quando si utilizza MapiMessage.

Usare Aspose.Email per Differenziare tra Allegati Inline e Regolari

Questo articolo spiega come differenziare gli allegati inline da quelli regolari usando MapiMessage. Per determinare questa differenziazione, viene considerato il tipo di corpo di MapiMessage come segue:

Corpo di Testo Semplice: I messaggi email con tipo corpo di testo semplice non necessitano di verifica, poiché tutti gli allegati in tali messaggi sono sempre allegati regolari.

Corpo Html: Nel caso di un messaggio con tipo corpo HTML, l’allegato non deve solo contenere la proprietà PR_ATTACH_FLAGS (0x37140003), ma il suo valore deve essere pari a 0x00000004 per gli allegati inline. Se questa condizione è soddisfatta, dipende ulteriormente dai tag PR_ATTACH_CONTENT_LOCATION e PR_ATTACH_CONTENT_ID per determinare la natura dell’allegato. Tuttavia, in assenza del tag Mapi PR_ATTACH_FLAGS, l’allegato viene verificato per la proprietà PR_ATTACH_DISPOSITION (0x3716001F o 0x3716001E) per determinare il tipo di allegato.

Corpo Rtf: Se il corpo è RTF, allora tutti gli allegati OLE sono allegati inline. Il valore di PR_ATTACH_METHOD per tutti gli allegati OLE è pari a 0x00000006.

Il seguente esempio di codice dimostra come differenziare programmaticamente tra allegati inline e regolari. La funzione IsInlineAttachment prende come parametri di input un allegato e il BodyType del messaggio e restituisce true se l’allegato è di tipo Inline.