Přečtěte si soubory MS Outlook PST v C# .NET

PST (Personal Storage Table) je formát souboru úložiště, který používají různé programy společnosti Microsoft, jako je MS Outlook, Exchange a Windows Messaging. Soubory PST jsou schopny ukládat zprávy, kontakty, kalendáře, události atd. V určitých případech může být nutné soubor PST analyzovat a extrahovat z něj data programově. Abychom toho dosáhli, tento článek ukazuje, jak číst soubory MS Outlook PST pomocí C# .NET. Zejména se naučíte, jak extrahovat informace o složkách, číst e-maily a načítat kontakty ze souboru PST.

.NET API pro čtení souborů PST aplikace Outlook

Aspose.Email for .NET je výkonné rozhraní API pro zpracování e-mailů, které umožňuje vytvářet a odesílat e-maily z aplikací .NET. Navíc podporuje práci s oblíbenými e-mailovými a úložnými formáty souborů. Toto rozhraní API použijeme ke čtení informací o složkách, zpráv a kontaktů ze souborů PST. Rozhraní API si můžete buď stáhnout, nebo jej nainstalovat pomocí NuGet.

PM> Install-Package Aspose.Email -Version 22.3.0

Přečtěte si soubor Outlook PST v C# .NET

Následují kroky ke čtení souboru PST a extrahování jeho informací v C#.

Následující ukázka kódu ukazuje, jak analyzovat soubor PST a načíst informace o složkách.

// Načíst soubor PST
PersonalStorage personalStorage = PersonalStorage.FromFile("PersonalStorage.pst");

// Získejte informace o složkách
FolderInfoCollection folderInfoCollection = personalStorage.RootFolder.GetSubFolders();

// Procházejte každou složku a zobrazte její informace
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("-----------------------------------");
}

Číst e-maily ze souboru PST v C#

E-maily jsou hlavní entity, které jsou uloženy v souborech PST v aplikaci MS Outlook. Pojďme se tedy podívat, jak číst e-mailové zprávy ze souboru PST v C#.

Následující ukázka kódu ukazuje, jak extrahovat zprávy ze souboru PST v C# .NET.

// Načtěte soubor PST aplikace Outlook
PersonalStorage pst = PersonalStorage.FromFile("PersonalStorage.pst");

// Získejte formát zobrazení souboru PST
Console.WriteLine("Display Format: " + pst.Format);

// Získejte informace o složkách a zprávách
Aspose.Email.Storage.Pst.FolderInfo folderInfo = pst.RootFolder;

// Chcete-li extrahovat soubory zpráv z každé složky, zavolejte rekurzivní metodu
ExtractMsgFiles(folderInfo, pst);

///<summary>
/// Toto je rekurzivní metoda pro zobrazení obsahu složky
///</summary>
///<param name="folderInfo"></param>
///<param name="pst"></param>
private static void ExtractMsgFiles(Aspose.Email.Storage.Pst.FolderInfo folderInfo, PersonalStorage pst)
{
    // Zobrazte název složky
    Console.WriteLine("Folder: " + folderInfo.DisplayName);
    Console.WriteLine("==================================");
            
    // Projděte všechny zprávy v této složce
    Aspose.Email.Storage.Pst.MessageInfoCollection messageInfoCollection = folderInfo.GetContents();
    foreach (Aspose.Email.Storage.Pst.MessageInfo messageInfo in messageInfoCollection)
    {
        Console.WriteLine("Saving message {0} ....", messageInfo.Subject);
                
        // Získejte zprávu v instanci MapiMessage
        MapiMessage message = pst.ExtractMessage(messageInfo);
                
        // Uložte tuto zprávu na disk ve formátu msg
        message.Save(message.Subject.Replace(":", " ") + ".msg");
                
        // Uložte tuto zprávu pro streamování ve formátu msg
        MemoryStream messageStream = new MemoryStream();
        message.Save(messageStream);
    }

    // Tuto metodu volejte rekurzivně pro každou podsložku
    if (folderInfo.HasSubFolders == true)
    {
        foreach (Aspose.Email.Storage.Pst.FolderInfo subfolderInfo in folderInfo.GetSubFolders())
        {
            ExtractMsgFiles(subfolderInfo, pst);
        }
    }
}

Extrahujte kontakty ze souboru PST v C#

V některých případech může být nutné extrahovat informace o kontaktech uložené v souboru PST. Následující kroky ukazují, jak získat přístup ke kontaktům v souboru PST v C#.

Následující ukázka kódu ukazuje, jak extrahovat kontakty ze souboru PST v C#.

// Načtěte soubor PST aplikace Outlook
PersonalStorage personalStorage = PersonalStorage.FromFile("SampleContacts.pst");

// Získejte složku Kontakty
FolderInfo folderInfo = personalStorage.RootFolder.GetSubFolder("Contacts");

// Procházejte všechny kontakty v této složce
MessageInfoCollection messageInfoCollection = folderInfo.GetContents();

foreach (MessageInfo messageInfo in messageInfoCollection)
{
    // Získejte kontaktní informace
    MapiMessage mapi = personalStorage.ExtractMessage(messageInfo);
    
    // Odeslání do MapiContact
    MapiContact contact = (MapiContact)mapi.ToMapiMessageItem();

    // Zobrazení určitého obsahu na obrazovce
    Console.WriteLine("Name: " + contact.NameInfo.DisplayName);
    
    // Uložit na disk ve formátu MSG
    if (contact.NameInfo.DisplayName != null)
    {
        MapiMessage message = personalStorage.ExtractMessage(messageInfo);
        
        // Zbavte se nelegálních znaků, které nelze použít jako název souboru
        string messageName = message.Subject.Replace(":", " ").Replace("\\", " ").Replace("?", " ").Replace("/", " ");
        message.Save(dataDir + "Contacts\\" + messageName + "_out.msg");
    }
}

Získejte bezplatnou licenci API

Aspose.Email pro .NET můžete zdarma vyzkoušet získání dočasné licence.

Závěr

V tomto článku jste se naučili číst soubory PST programově v C# .NET. Dále jste viděli, jak číst informace o složce, načítat e-maily a extrahovat kontakty ze souboru PST v C#. Kromě toho můžete prozkoumat více o Aspose.Email pro .NET pomocí dokumentace. Také můžete sdílet své dotazy nebo dotazy na našem fóru.

Viz také