Arbeiten mit Nachrichten‑Anhängen

Parsen und Speichern von Anhängen

Outlook‑Nachrichtendateien können einen oder mehrere Anhänge enthalten. Aspose.Email ermöglicht Entwicklern, die Anhänge einer MSG‑Datei zu durchlaufen und sie auf die Festplatte zu speichern. Dieses Thema beschreibt den Vorgang. Es beschreibt außerdem, wie man einen Anhang einbettet.

Aspose.Email MapiMessage Klasse wird verwendet, um eine MSG‑Datei von der Festplatte zu laden und stellt die getAttachments() Methode, die die MapiAttachment Objektsammlung, die mit der MSG‑Datei verknüpft ist. Die MapiAttachment Objekt stellt weiter Methoden bereit, die Aktionen am Anhang ausführen.

So speichern Sie Anhänge in einer MSG‑Datei auf die Festplatte mit dem ursprünglichen Namen und der Erweiterung:

  1. Erstellen Sie eine Instanz von dem MapiMessage Klasse, um eine MSG‑Datei mit dem Load() statische Methode.
  2. Rufen Sie die MapiRecipient Klasse getAttachments() Methode, um eine Referenz auf die Sammlung von MapiAttachment Objekten, die mit der MSG‑Datei verknüpft sind.
  3. Durchlaufen Sie die MapiAttachmentCollection um Inhalte zu jedem MapiAttachment Objekt über seine öffentlichen Methoden.
  4. Rufen Sie die MapiAttachment Klasse save() Methode, um den Anhang auf die Festplatte zu speichern.  

Einbetten von Nachrichten als Anhänge

Eine Microsoft‑Outlook‑Nachricht kann andere Microsoft‑Outlook‑Nachrichten als Anhänge enthalten, entweder als reguläre Nachrichten, wie oben beschrieben, oder als eingebettete Nachrichten. Das MapiAttachmentCollection stellt überladene Varianten der add‑Methode bereit, um Outlook‑Nachrichten mit beiden Arten von Anhängen zu erstellen. In einer Outlook‑MSG‑Datei eingebettete MSG‑Dateien enthalten ein PR_ATTACH_METHOD mit dem Wert 5.

Lesen einer eingebetteten Nachricht aus einem Anhang

Einfügen und Ersetzen von MSG‑Anhängen

Die Aspose.Email‑API ermöglicht das Einfügen von Anhängen an einem bestimmten Index in die übergeordnete Nachricht. Sie bietet außerdem die Möglichkeit, den Inhalt eines Anhangs durch einen anderen Nachrichten‑Anhang zu ersetzen.

Einfügen eines MSG‑Anhangs an einer bestimmten Position

Die Aspose.Email‑API bietet die Möglichkeit, einen MSG‑Anhang in eine übergeordnete MSG‑Datei einzufügen, indem die MapiAttachmentCollection.Insert() Methode.

Ersetzen von eingebetteten MSG‑Anhangsinhalten

Dies kann verwendet werden, um eingebettete Anhangsinhalte mit den neuen mittels der Ersetzen Methode. Allerdings kann sie nicht verwendet werden, um einen Anhang mit PR_ATTACH_NUM = 4 (zum Beispiel) in eine Sammlung einzufügen, deren collection.Count = 2 ist.

Speichern von Anhängen aus digital signierten Nachrichten

Die Aspose.Email‑API bietet die Möglichkeit, einen Wert zu erhalten oder zu setzen, der angibt, ob eine klar signierte Nachricht dekodiert wird. 

Umbenennen eines Anhangs in einer MapiMessage

Aspose.Email ermöglicht das Bearbeiten der Anzeigename Eigenschaftswert in MapiMessage‑Anhänge.

Das folgende Code‑Beispiel zeigt, wie die Anzeigenamen des ersten und zweiten Anhangs in der geladenen Mapi‑Nachricht aktualisiert werden können:

MapiMessage msg = MapiMessage.load(fileName);
msg.getAttachments().get_Item(0).setDisplayName("New display name 1");
msg.getAttachments().get_Item(1).setDisplayName("New display name 2");

Prüfen, ob ein Anhang inline oder regulär ist

Der Unterschied zwischen Inline‑ und regulären Anhängen besteht darin, wie sie in einer E‑Mail dargestellt werden. Inline‑Anhänge sind im E‑Mail‑Body eingebettet und können angezeigt werden, ohne dass eine separate Datei geöffnet oder etwas heruntergeladen werden muss. Reguläre Anhänge hingegen sind separate Dateien, die an die E‑Mail angehängt werden, jedoch nicht direkt im Nachrichten‑Body angezeigt werden und extern heruntergeladen und geöffnet werden müssen. Der MapiAttachment.IsInline Eigenschaft des MapiAttachment Klasse erhält einen Wert, der angibt, ob der Anhang inline oder regulär ist.

Das folgende Code‑Beispiel lädt eine E‑Mail‑Nachricht aus einer Datei und ruft anschließend Informationen zu den Anhängen ab, wobei speziell der Anzeigename jedes Anhangs und ob er innerhalb der Nachricht eingebettet (inline) ist, ausgegeben wird:

MapiMessage message = MapiMessage.load("fileName");

for (MapiAttachment attach : message.getAttachments()) {
    System.out.println(attach.getDisplayName() + ": " + attach.isInline());
}