Verwalten von Nachrichtenanhängen

Verwalten von Anhängen in Outlook

Erstellen und Speichern von Outlook‑Nachrichten (MSG)‑Dateien erklärt, wie Nachrichten erstellt und gespeichert werden und wie MSG‑Dateien mit Anhängen erstellt werden. Dieser Artikel erklärt, wie Microsoft‑Outlook‑Anhänge mit Aspose.Email verwaltet werden. Anhänge aus einer Nachrichten‑Datei werden über die MapiMessage Klasse Anhänge Eigenschaft. Die Anhänge Eigenschaft ist eine Sammlung vom Typ MapiAttachmentCollection Klasse.

Anhangstyp prüfen (Inline oder regulär)

Inline‑ und reguläre Anhänge dienen unterschiedlichen Zwecken. Inline‑Anhänge sind visuell in die E‑Mail‑Nachricht integriert und sind typischerweise Bilder oder Mediendateien. Reguläre Anhänge sind hingegen separate Dateien, die an die E‑Mail angehängt werden und verschiedene Dateitypen enthalten können. Der MapiAttachment.IsInline Eigenschaft des MapiAttachment Klasse erhält einen Wert, der angibt, ob der Anhang inline oder regulär ist.

Das folgende Codebeispiel extrahiert und zeigt Informationen zu jedem Anhang in der geladenen MapiMessage an, einschließlich ihrer Anzeigenamen und ob es sich um Inline‑Anhänge handelt oder nicht.

var message = MapiMessage.Load(fileName);

foreach (var attach in message.Attachments)
{
    Console.WriteLine($"{attach.DisplayName0} : {attach.IsInline)}");
}

Anhangstyp prüfen (IsReference)

Die MapiAttachment Klasse enthält die IsReference Eigenschaft, die es Entwicklern ermöglicht, Referenzanhänge in einer Nachricht zu identifizieren. Mit dem folgenden Codebeispiel können Sie prüfen, ob ein Anhang ein Referenzanhang ist:

foreach (var attachment in msg.Attachments)
{
    if (attachment.IsReference)
    {
        // Process reference attachment
    }
}

Anhänge aus MSG‑Dateien speichern

Um Anhänge aus einer MSG‑Datei zu speichern:

  1. Iterieren Sie durch die MapiAttachmentCollection Sammlung auf und holen Sie die einzelnen Anhänge.
  2. Um die Anhänge zu speichern, rufen Sie die Save()-Methode der MapiAttachment‑Klasse auf.

Das folgende Code‑Snippet zeigt, wie Anhänge auf der lokalen Festplatte gespeichert werden.

Anhänge aus RTF‑formatierten MSG‑Dateien extrahieren

Für als RTF formatierte Nachrichten kann der folgende Code verwendet werden, um Anhänge zu unterscheiden und zu extrahieren, die entweder Inline sind oder als Symbol im Nachrichtenkörper erscheinen. Das folgende Code‑Snippet zeigt, wie ein eingebetteter Anhang aus einer als RTF formatierten MSG‑Datei identifiziert und extrahiert wird.


var eml = MapiMessage.Load("MSG file with RTF Formatting.msg");

foreach (var attachment in eml.Attachments)
{
    if (IsAttachmentInline(attachment))
    {
        try
        {
            SaveAttachment(attachment, Data.Out/new Guid().ToString());
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
}

static bool IsAttachmentInline(MapiAttachment attachment)
{
    foreach (var property in attachment.ObjectData.Properties.Values)
    {
        if (property.Name == "\x0003ObjInfo")
        {
            var odtPersist1 = BitConverter.ToUInt16(property.Data, 0);
            return (odtPersist1 & (1 << (7 - 1))) == 0;
        }
    }
    return false;
}

static void SaveAttachment(MapiAttachment attachment, string fileName)
{
    foreach (var property in attachment.ObjectData.Properties.Values)
    {
        if (property.Name == "Package")
        {
            using var fs = new FileStream(fileName, FileMode.Create, FileAccess.Write);
            fs.Write(property.Data, 0, property.Data.Length);
        }
    }
}

Verschachtelte Mail‑Nachrichtenanhänge erhalten

Eingbettete OLE‑Anhänge erscheinen auch in der MapiMessage Klasse Attachment‑Sammlung. Das folgende Codebeispiel analysiert eine Nachrichten‑Datei nach eingebetteten Nachrichtenanhängen und speichert sie auf dem Datenträger. Die MapiMessage Die statische Methode FromProperties() der Klasse kann eine neue Nachricht aus einem eingebetteten Anhang erstellen. Das folgende Code‑Snippet zeigt, wie verschachtelte Mail‑Nachrichtenanhänge abgerufen werden.

Anhänge entfernen

Die Aspose‑Outlook‑Bibliothek bietet die Möglichkeit, Anhänge aus Microsoft Outlook‑Nachrichten (.msg)-Dateien zu entfernen:

  • Rufen Sie die Methode RemoveAttachments() auf. Sie erhält den Pfad der Nachrichten‑Datei als Parameter. Sie ist als öffentliche statische Methode implementiert, sodass Sie kein Objekt instanziieren müssen.

Das folgende Code‑Snippet zeigt, wie man Anhänge entfernt.

Sie können auch die MapiMessage Klassen‑statische Methode DestroyAttachment(). Es funktioniert schneller als RemoveAttachment(), da die RemoveAttachment()-Methode die Nachrichten‑Datei analysiert.

MSG‑Anhänge hinzufügen

Eine Outlook‑Nachricht kann andere Microsoft‑Outlook‑Nachrichten als Anhänge enthalten, entweder als reguläre oder eingebettete Nachrichten. Die MapiAttachmentCollection bietet überladene Mitglieder der Add‑Methode, um Outlook‑Nachrichten mit beiden Anlagentypen zu erstellen.

Referenzanhänge zu MapiMessages hinzufügen

Die ReferenceAttachmentOptions Klasse vereinfacht das Hinzufügen von Referenzanhängen, indem sie alle notwendigen Eigenschaften in einem einzigen Objekt kapselt.

Parameter von ReferenceAttachmentOptions:

  • sharedLink: Ein vollständig qualifizierter Shared‑Link zum Anhang, bereitgestellt vom Web‑Service, der die Datei hostet.
  • url: Der Dateistandort oder die Ressourcen‑URL.
  • providerName: Der Name des Referenzanhangs‑Anbieters (z. B. Google Drive, Dropbox).
  • Beispiel: Hinzufügen eines Referenzanhangs mit ReferenceAttachmentOptions
var options = new ReferenceAttachmentOptions(
    "https://drive.google.com/file/d/1HJ-M3F2qq1oRrTZ2GZhUdErJNy2CT3DF/",
    "https://drive.google.com/drive/my-drive",
    "GoogleDrive");

// Add reference attachment
msg.Attachments.Add("Document.pdf", options);

Nachrichten als Anhänge einbetten

Das folgende Code‑Snippet zeigt, wie ein MSG‑Dateianhang in eine Nachricht eingebettet wird.

Eingebettete Nachrichten aus Anhängen lesen

Das folgende Code‑Snippet zeigt, wie eingebettete Nachrichten aus Anhängen gelesen werden.

Einfügen und Ersetzen von 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.

Anhänge an bestimmten Positionen einfügen

Die Aspose.Email‑API bietet die Möglichkeit, einen MSG‑Anhang in eine übergeordnete MSG mithilfe der Insert‑Methode der MapiAttachmentCollection (MapiAttachmentCollection Insert(int index, string name, MapiMessage msg)) einzufügen. Das folgende Code‑Snippet zeigt, wie ein Anhang an einer bestimmten Position eingefügt wird.

Anhangsinhalte ersetzen

Damit können Sie Inhalte eingebetteter Anhänge mit neuen Inhalten über die Replace‑Methode ersetzen. Sie kann jedoch nicht verwendet werden, um einen Anhang mit PR_ATTACH_NUM = 4 (zum Beispiel) in eine Auflistung einzufügen, deren collection.Count = 2 ist. Das folgende Code‑Snippet zeigt, wie man Anhangsinhalte ersetzt.

Anhänge in MapiMessage umbenennen

Es ist möglich, den Wert der DisplayName‑Eigenschaft in MapiMessage‑Anhängen zu bearbeiten.

var msg = MapiMessage.Load(fileName);
msg.Attachments[0].DisplayName = "New display name 1";
msg.Attachments[1].DisplayName = "New display name 2";

Anhänge aus digital signierten Nachrichten speichern

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