PST (Personal Storage Table) är ett lagringsfilformat som används av olika Microsoft-program som MS Outlook, Exchange och Windows Messaging. PST-filer kan lagra meddelanden, kontakter, kalendrar, händelser, etc. I vissa fall kan du behöva analysera en PST-fil och extrahera data från den programmatiskt. För att uppnå det visar den här artikeln hur man läser MS Outlook PST-filer med C# .NET. I synnerhet kommer du att lära dig hur du extraherar mappars information, läser e-postmeddelanden och hämtar kontakter från en PST-fil.
- .NET API för att läsa Outlook PST-filer
- Läs en PST-fil i C#
- Läs e-postmeddelanden från en PST-fil
- Extrahera kontakter från en PST-fil
.NET API för att läsa Outlook PST-filer
Aspose.Email for .NET är ett kraftfullt e-postbearbetnings-API som låter dig skapa och skicka e-postmeddelanden från .NET-applikationer. Dessutom stöder den att arbeta med populära e-post- och lagringsfilformat. Vi kommer att använda detta API för att läsa mappars information, meddelanden och kontakter från PST-filer. Du kan antingen ladda ner API:et eller installera det via NuGet.
PM> Install-Package Aspose.Email -Version 22.3.0
Läs en Outlook PST-fil i C# .NET
Följande är stegen för att läsa en PST-fil och extrahera dess information i C#.
- Ladda PST-filen med metoden PersonalStorage.FromFile().
- Hämta mappsamlingen i PST med metoden PersonalStorage.RootFolder.GetSubFolders().
- Hämta information om mapparna som namn, antal objekt osv.
Följande kodexempel visar hur man analyserar en PST-fil och hämtar mapparinformation.
// Ladda PST-fil
PersonalStorage personalStorage = PersonalStorage.FromFile("PersonalStorage.pst");
// Få information om mapparna
FolderInfoCollection folderInfoCollection = personalStorage.RootFolder.GetSubFolders();
// Bläddra igenom varje mapp för att visa dess information
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("-----------------------------------");
}
Läs e-postmeddelanden från en PST-fil i C#
E-post är de viktigaste enheterna som lagras i PST-filer av MS Outlook. Så låt oss se hur man läser e-postmeddelanden från en PST-fil i C#.
- Ladda PST-filen med metoden PersonalStorage.FromFile().
- Få åtkomst till rotmappen med egenskapen PersonalStorage.RootFolder.
- Hämta meddelandesamling med metoden FolderInfo.GetContents().
- Gå igenom meddelandena i samlingen och läs varje meddelandes fält.
Följande kodexempel visar hur man extraherar meddelanden från en PST-fil i C# .NET.
// Ladda Outlook PST-filen
PersonalStorage pst = PersonalStorage.FromFile("PersonalStorage.pst");
// Hämta visningsformatet för PST-filen
Console.WriteLine("Display Format: " + pst.Format);
// Få information om mappar och meddelanden
Aspose.Email.Storage.Pst.FolderInfo folderInfo = pst.RootFolder;
// Anropa den rekursiva metoden för att extrahera msg-filer från varje mapp
ExtractMsgFiles(folderInfo, pst);
///<summary>
/// Detta är en rekursiv metod för att visa innehållet i en mapp
///</summary>
///<param name="folderInfo"></param>
///<param name="pst"></param>
private static void ExtractMsgFiles(Aspose.Email.Storage.Pst.FolderInfo folderInfo, PersonalStorage pst)
{
// Visa mappnamnet
Console.WriteLine("Folder: " + folderInfo.DisplayName);
Console.WriteLine("==================================");
// Gå igenom alla meddelanden i den här mappen
Aspose.Email.Storage.Pst.MessageInfoCollection messageInfoCollection = folderInfo.GetContents();
foreach (Aspose.Email.Storage.Pst.MessageInfo messageInfo in messageInfoCollection)
{
Console.WriteLine("Saving message {0} ....", messageInfo.Subject);
// Hämta meddelandet i MapiMessage-instansen
MapiMessage message = pst.ExtractMessage(messageInfo);
// Spara detta meddelande på disk i msg-format
message.Save(message.Subject.Replace(":", " ") + ".msg");
// Spara detta meddelande för att streama i msg-format
MemoryStream messageStream = new MemoryStream();
message.Save(messageStream);
}
// Anropa denna metod rekursivt för varje undermapp
if (folderInfo.HasSubFolders == true)
{
foreach (Aspose.Email.Storage.Pst.FolderInfo subfolderInfo in folderInfo.GetSubFolders())
{
ExtractMsgFiles(subfolderInfo, pst);
}
}
}
Extrahera kontakter från en PST-fil i C#
I vissa fall kan du behöva extrahera kontakternas information lagrad i en PST-fil. Följande steg visar hur du kommer åt kontakterna i en PST-fil i C#.
- Ladda PST-filen med metoden PersonalStorage.FromFile().
- Få referens till kontaktmappen med metoden PersonalStorage.RootFolder.GetSubFolder(“Contacts”).
- Få samling av kontakter med metoden FolderInfo.GetContents().
- Gå igenom kontaktsamlingen och läs varje kontakt eller spara den.
Följande kodexempel visar hur man extraherar kontakter från en PST-fil i C#.
// Ladda Outlook PST-filen
PersonalStorage personalStorage = PersonalStorage.FromFile("SampleContacts.pst");
// Hämta mappen Kontakter
FolderInfo folderInfo = personalStorage.RootFolder.GetSubFolder("Contacts");
// Gå igenom alla kontakter i den här mappen
MessageInfoCollection messageInfoCollection = folderInfo.GetContents();
foreach (MessageInfo messageInfo in messageInfoCollection)
{
// Få kontaktinformationen
MapiMessage mapi = personalStorage.ExtractMessage(messageInfo);
// Casta till MapiContact
MapiContact contact = (MapiContact)mapi.ToMapiMessageItem();
// Visa en del innehåll på skärmen
Console.WriteLine("Name: " + contact.NameInfo.DisplayName);
// Spara på disk i MSG-format
if (contact.NameInfo.DisplayName != null)
{
MapiMessage message = personalStorage.ExtractMessage(messageInfo);
// Bli av med olagliga tecken som inte kan användas som filnamn
string messageName = message.Subject.Replace(":", " ").Replace("\\", " ").Replace("?", " ").Replace("/", " ");
message.Save(dataDir + "Contacts\\" + messageName + "_out.msg");
}
}
Skaffa en gratis API-licens
Du kan prova Aspose.Email för .NET gratis genom att skaffa en tillfällig licens.
Slutsats
I den här artikeln har du lärt dig hur du läser PST-filer programmatiskt i C# .NET. Dessutom har du sett hur du läser mappinformation, hämtar e-postmeddelanden och extraherar kontakter från en PST-fil i C#. Dessutom kan du utforska mer om Aspose.Email för .NET med hjälp av dokumentation. Du kan också dela dina frågor eller frågor på vårt forum.