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
- Přečtěte si soubor PST v C#
- Čtení e-mailů ze souboru PST
- Extrahujte 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#.
- Načtěte soubor PST pomocí metody PersonalStorage.FromFile().
- Získejte kolekci složek v PST pomocí metody PersonalStorage.RootFolder.GetSubFolders().
- Získejte informace o složkách, jako je název, počet položek atd.
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#.
- Načtěte soubor PST pomocí metody PersonalStorage.FromFile().
- Otevřete kořenovou složku pomocí vlastnosti PersonalStorage.RootFolder.
- Získejte kolekci zpráv pomocí metody FolderInfo.GetContents().
- Procházejte zprávy v kolekci a přečtěte si pole každé zprávy.
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#.
- Načtěte soubor PST pomocí metody PersonalStorage.FromFile().
- Získejte odkaz na složku kontaktů pomocí metody PersonalStorage.RootFolder.GetSubFolder(“Contacts”).
- Získejte kolekci kontaktů pomocí metody FolderInfo.GetContents().
- Procházejte sbírku kontaktů a přečtěte si každý kontakt nebo jej uložte.
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.