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
- Lesen Sie eine PST-Datei in C#
- Lesen Sie E-Mails aus einer PST-Datei
- Extrahieren Sie Kontakte aus einer PST-Datei
.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.
- Laden Sie die PST-Datei mit der Methode PersonalStorage.FromFile().
- Rufen Sie die Ordnersammlung in PST mit der Methode PersonalStorage.RootFolder.GetSubFolders() ab.
- Rufen Sie die Informationen der Ordner ab, wie Name, Anzahl der Elemente usw.
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.
- Laden Sie die PST-Datei mit der Methode PersonalStorage.FromFile().
- Greifen Sie mit der Eigenschaft PersonalStorage.RootFolder auf den Stammordner zu.
- Rufen Sie die Nachrichtensammlung mit der Methode FolderInfo.GetContents() ab.
- Durchlaufen Sie die Nachrichten in der Sammlung und lesen Sie die Felder jeder Nachricht.
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#.
- Laden Sie die PST-Datei mit der Methode PersonalStorage.FromFile().
- Rufen Sie die Referenz des Kontaktordners mit der Methode PersonalStorage.RootFolder.GetSubFolder(“Contacts”) ab.
- Rufen Sie eine Sammlung von Kontakten mit der Methode FolderInfo.GetContents() ab.
- Gehen Sie durch die Kontaktsammlung und lesen Sie jeden Kontakt oder speichern Sie ihn.
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.