Lesen Sie MS Outlook PST-Dateien in C# .NET

PST (Personal Storage Table) ist ein Speicherdateiformat, das von verschiedenen Microsoft-Programmen wie MS Outlook, Exchange und Windows Messaging verwendet wird. PST-Dateien können Nachrichten, Kontakte, Kalender, Ereignisse usw. speichern. In bestimmten Fällen müssen Sie möglicherweise eine PST-Datei parsen und Daten daraus programmgesteuert extrahieren. Um dies zu erreichen, zeigt dieser Artikel, wie Sie MS Outlook PST-Dateien mit C# .NET lesen. Insbesondere erfahren Sie, wie Sie Ordnerinformationen extrahieren, E-Mails lesen und Kontakte aus einer PST-Datei abrufen.

.NET-API zum Lesen von Outlook-PST-Dateien

Aspose.Email for .NET ist eine leistungsstarke E-Mail-Verarbeitungs-API, mit der Sie E-Mails aus .NET-Anwendungen heraus erstellen und versenden können. Darüber hinaus unterstützt es die Arbeit mit gängigen E-Mail- und Speicherdateiformaten. Wir werden diese API verwenden, um Ordnerinformationen, Nachrichten und Kontakte aus PST-Dateien zu lesen. Sie können die API entweder herunterladen oder über NuGet installieren.

PM> Install-Package Aspose.Email -Version 22.3.0

Lesen Sie eine Outlook-PST-Datei in C# .NET

Im Folgenden sind die Schritte zum Lesen einer PST-Datei und zum Extrahieren ihrer Informationen in C# aufgeführt.

Das folgende Codebeispiel zeigt, wie eine PST-Datei analysiert und die Ordnerinformationen abgerufen werden.

// PST-Datei laden
PersonalStorage personalStorage = PersonalStorage.FromFile("PersonalStorage.pst");

// Rufen Sie die Ordnerinformationen ab
FolderInfoCollection folderInfoCollection = personalStorage.RootFolder.GetSubFolders();

// Durchsuchen Sie jeden Ordner, um seine Informationen anzuzeigen
foreach (FolderInfo folderInfo in folderInfoCollection)
{
    Console.WriteLine("Folder: " + folderInfo.DisplayName);
    Console.WriteLine("Total items: " + folderInfo.ContentCount);
    Console.WriteLine("Total unread items: " + folderInfo.ContentUnreadCount);
    Console.WriteLine("-----------------------------------");
}

Lesen Sie E-Mails aus einer PST-Datei in C#

E-Mails sind die wichtigsten Einheiten, die von MS Outlook in PST-Dateien gespeichert werden. Sehen wir uns also an, wie E-Mail-Nachrichten aus einer PST-Datei in C# gelesen werden.

Das folgende Codebeispiel zeigt, wie Nachrichten aus einer PST-Datei in C# .NET extrahiert werden.

// Laden Sie die Outlook-PST-Datei
PersonalStorage pst = PersonalStorage.FromFile("PersonalStorage.pst");

// Rufen Sie das Anzeigeformat der PST-Datei ab
Console.WriteLine("Display Format: " + pst.Format);

// Rufen Sie die Ordner- und Nachrichteninformationen ab
Aspose.Email.Storage.Pst.FolderInfo folderInfo = pst.RootFolder;

// Rufen Sie die rekursive Methode auf, um msg-Dateien aus jedem Ordner zu extrahieren
ExtractMsgFiles(folderInfo, pst);

///<summary>
/// Dies ist eine rekursive Methode, um den Inhalt eines Ordners anzuzeigen
///</summary>
///<param name="folderInfo"></param>
///<param name="pst"></param>
private static void ExtractMsgFiles(Aspose.Email.Storage.Pst.FolderInfo folderInfo, PersonalStorage pst)
{
    // Zeigen Sie den Ordnernamen an
    Console.WriteLine("Folder: " + folderInfo.DisplayName);
    Console.WriteLine("==================================");
            
    // Durchlaufen Sie alle Nachrichten in diesem Ordner
    Aspose.Email.Storage.Pst.MessageInfoCollection messageInfoCollection = folderInfo.GetContents();
    foreach (Aspose.Email.Storage.Pst.MessageInfo messageInfo in messageInfoCollection)
    {
        Console.WriteLine("Saving message {0} ....", messageInfo.Subject);
                
        // Rufen Sie die Nachricht in der MapiMessage-Instanz ab
        MapiMessage message = pst.ExtractMessage(messageInfo);
                
        // Speichern Sie diese Nachricht im msg-Format auf der Festplatte
        message.Save(message.Subject.Replace(":", " ") + ".msg");
                
        // Speichern Sie diese Nachricht, um sie im msg-Format zu streamen
        MemoryStream messageStream = new MemoryStream();
        message.Save(messageStream);
    }

    // Rufen Sie diese Methode rekursiv für jeden Unterordner auf
    if (folderInfo.HasSubFolders == true)
    {
        foreach (Aspose.Email.Storage.Pst.FolderInfo subfolderInfo in folderInfo.GetSubFolders())
        {
            ExtractMsgFiles(subfolderInfo, pst);
        }
    }
}

Kontakte aus einer PST-Datei in C# extrahieren

In bestimmten Fällen müssen Sie möglicherweise die in einer PST-Datei gespeicherten Kontaktinformationen extrahieren. Die folgenden Schritte veranschaulichen den Zugriff auf die Kontakte in einer PST-Datei in C#.

Das folgende Codebeispiel zeigt, wie Kontakte aus einer PST-Datei in C# extrahiert werden.

// Laden Sie die Outlook-PST-Datei
PersonalStorage personalStorage = PersonalStorage.FromFile("SampleContacts.pst");

// Holen Sie sich den Ordner Kontakte
FolderInfo folderInfo = personalStorage.RootFolder.GetSubFolder("Contacts");

// Durchlaufen Sie alle Kontakte in diesem Ordner
MessageInfoCollection messageInfoCollection = folderInfo.GetContents();

foreach (MessageInfo messageInfo in messageInfoCollection)
{
    // Holen Sie sich die Kontaktinformationen
    MapiMessage mapi = personalStorage.ExtractMessage(messageInfo);
    
    // Auf MapiContact übertragen
    MapiContact contact = (MapiContact)mapi.ToMapiMessageItem();

    // Zeigen Sie einige Inhalte auf dem Bildschirm an
    Console.WriteLine("Name: " + contact.NameInfo.DisplayName);
    
    // Speichern Sie im MSG-Format auf der Festplatte
    if (contact.NameInfo.DisplayName != null)
    {
        MapiMessage message = personalStorage.ExtractMessage(messageInfo);
        
        // Entfernen Sie illegale Zeichen, die nicht als Dateiname verwendet werden können
        string messageName = message.Subject.Replace(":", " ").Replace("\\", " ").Replace("?", " ").Replace("/", " ");
        message.Save(dataDir + "Contacts\\" + messageName + "_out.msg");
    }
}

Holen Sie sich eine kostenlose API-Lizenz

Sie können Aspose.Email für .NET kostenlos testen, indem Sie eine temporäre Lizenz erwerben.

Fazit

In diesem Artikel haben Sie gelernt, wie Sie PST-Dateien programmgesteuert in C# .NET lesen. Außerdem haben Sie gesehen, wie Sie Ordnerinformationen lesen, E-Mails abrufen und Kontakte aus einer PST-Datei in C# extrahieren. Außerdem können Sie mehr über Aspose.Email für .NET erfahren, indem Sie Dokumentation verwenden. Außerdem können Sie Ihre Fragen oder Fragen in unserem Forum teilen.

Siehe auch