Unterscheidung zwischen Inline‑ und regulären Anhängen
Es ist ein häufiges Szenario, dass eine E‑Mail sowohl Inline‑Bilder im Body als auch reguläre Anhänge enthält. Mit MailMessage Klasse extrahiert werden können, während die Inline‑Anhänge aus der LinkedResourceCollection Klasse, während die regulären Anhänge mit der AttachmentCollection Klasse einer Nachricht. Dies ist jedoch anders, wenn die Nachricht mit der Aspose.Email.Mapi.MapiMessage‑Klasse geladen wird, da alle Inline‑Bilder und regulären Anhänge dem Benutzer in derselben MapiAttachmentCollection‑Klasse zur Verfügung stehen. Daher muss eine Methode entwickelt werden, die bei Verwendung von MapiMessage zwischen einem Inline‑ und einem regulären Anhang unterscheiden kann.
Verwendung von Aspose.Email zum Unterscheiden von Inline‑ und regulären Anhängen
Dieser Artikel erklärt, wie man Inline‑Anhänge von regulären Anhängen mittels MapiMessage unterscheidet. Um diese Unterscheidung zu bestimmen, wird der Body‑Typ von MapiMessage wie folgt berücksichtigt:
Plain‑Text‑Body: E‑Mail‑Nachrichten mit einfacher Text‑Body müssen nicht geprüft werden, da alle Anhänge in solchen Nachrichten stets reguläre Anhänge sind.
Html‑Body: Bei einer Nachricht mit HTML‑Body‑Typ sollte der Anhang nicht nur die Eigenschaft PR_ATTACH_FLAGS (0x37140003) enthalten, sondern ihr Wert muss für Inline‑Anhänge 0x00000004 sein. Ist diese Bedingung erfüllt, hängt die weitere Bestimmung des Anlagentyps von den Tags PR_ATTACH_CONTENT_LOCATION und PR_ATTACH_CONTENT_ID ab. Fehlt jedoch das PR_ATTACH_FLAGS‑Mapi‑Tag, wird der Anhang anhand der Eigenschaft PR_ATTACH_DISPOSITION (0x3716001F oder 0x3716001E) überprüft, um den Anlagentyp zu bestimmen.
Rtf‑Body: Ist der Body RTF, dann sind alle OLE‑Anhänge Inline‑Anhänge. Der Wert von PR_ATTACH_METHOD für alle OLE‑Anhänge ist gleich 0x00000006.
Das folgende Code‑Beispiel zeigt, wie man programmgesteuert zwischen Inline‑ und regulären Anhängen unterscheidet. Die Funktion IsInlineAttachment nimmt einen Anhang und den BodyType der Nachricht als Eingabeparameter und gibt true zurück, wenn der Anhang ein Inline‑Anhang ist.