Différencier les pièces jointes inline et régulières

C’est un scénario fréquent lorsqu’un message e‑mail peut contenir des images inline dans son corps ainsi que des pièces jointes régulières associées. En utilisant MailMessage classe, les pièces jointes inline peuvent être extraites de la LinkedResourceCollection classe, tandis que les pièces jointes régulières peuvent être accédées/extraites avec le AttachmentCollection classe d’un message. Cependant, c’est différent lorsque le message est chargé à l’aide de la classe Aspose.Email.Mapi.MapiMessage, car toutes les images inline et les pièces jointes régulières sont accessibles à l’utilisateur dans la même classe MapiAttachmentCollection. Il faut donc concevoir une méthode capable de différencier une pièce jointe inline d’une pièce jointe régulière lorsqu’on utilise MapiMessage.

Utiliser Aspose.Email pour différencier les pièces jointes inline et régulières

Cet article explique comment différencier les pièces jointes inline des pièces jointes régulières en utilisant MapiMessage. Pour déterminer cette différenciation, le type de corps de MapiMessage est pris en compte comme suit :

Corps texte brut : Les messages e‑mail avec un corps de type texte brut n’ont pas besoin d’être vérifiés, car toutes les pièces jointes dans de tels messages sont toujours des pièces jointes régulières.

Corps Html : Dans le cas d’un message avec un corps de type HTML, la pièce jointe doit non seulement contenir la propriété PR_ATTACH_FLAGS (0x37140003), mais aussi sa valeur doit être égale à 0x00000004 pour les pièces jointes inline. Si cette condition est remplie, cela dépend ensuite des balises PR_ATTACH_CONTENT_LOCATION et PR_ATTACH_CONTENT_ID pour déterminer la nature de la pièce jointe. Cependant, en l’absence du tag Mapi PR_ATTACH_FLAGS, la pièce jointe est vérifiée pour la propriété PR_ATTACH_DISPOSITION (0x3716001F ou 0x3716001E) afin de déterminer le type de pièce jointe.

Corps Rtf : Si le corps est au format RTF, alors toutes les pièces jointes OLE sont des pièces jointes inline. La valeur de PR_ATTACH_METHOD pour toutes les pièces jointes OLE est égale à 0x00000006.

L’exemple de code suivant montre comment différencier programme­ment les pièces jointes inline et régulières. La fonction IsInlineAttachment prend en paramètres une pièce jointe et le type de corps du message et renvoie true si la pièce jointe est inline.