PST (Personal Storage Table) est un format de fichier de stockage utilisé par différents programmes Microsoft tels que MS Outlook, Exchange et Windows Messaging. Les fichiers PST sont capables de stocker des messages, des contacts, des calendriers, des événements, etc. Dans certains cas, vous devrez peut-être analyser un fichier PST et en extraire des données par programmation. Pour y parvenir, cet article montre comment lire les fichiers MS Outlook PST à l’aide de C# .NET. En particulier, vous apprendrez à extraire les informations des dossiers, à lire les e-mails et à récupérer les contacts à partir d’un fichier PST.
- API .NET pour lire les fichiers Outlook PST
- Lire un fichier PST en C#
- Lire des e-mails à partir d’un fichier PST
- Extraire les contacts d’un fichier PST
API .NET pour lire les fichiers Outlook PST
Aspose.Email for .NET est une puissante API de traitement des e-mails qui vous permet de créer et d’envoyer des e-mails à partir d’applications .NET. En outre, il prend en charge le travail avec les formats de fichiers de messagerie et de stockage les plus courants. Nous utiliserons cette API pour lire les informations, les messages et les contacts des dossiers à partir de fichiers PST. Vous pouvez soit télécharger l’API ou l’installer via NuGet.
PM> Install-Package Aspose.Email -Version 22.3.0
Lire un fichier Outlook PST en C# .NET
Voici les étapes pour lire un fichier PST et extraire ses informations en C#.
- Chargez le fichier PST à l’aide de la méthode PersonalStorage.FromFile().
- Obtenez la collection de dossiers dans PST à l’aide de la méthode PersonalStorage.RootFolder.GetSubFolders().
- Récupérer les informations des dossiers telles que le nom, le nombre d’éléments, etc.
L’exemple de code suivant montre comment analyser un fichier PST et récupérer les informations des dossiers.
// Charger le fichier PST
PersonalStorage personalStorage = PersonalStorage.FromFile("PersonalStorage.pst");
// Obtenir les informations des dossiers
FolderInfoCollection folderInfoCollection = personalStorage.RootFolder.GetSubFolders();
// Parcourez chaque dossier pour afficher ses informations
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("-----------------------------------");
}
Lire des e-mails à partir d’un fichier PST en C#
Les e-mails sont les principales entités stockées dans les fichiers PST par MS Outlook. Voyons donc comment lire les e-mails à partir d’un fichier PST en C#.
- Chargez le fichier PST à l’aide de la méthode PersonalStorage.FromFile().
- Accédez au dossier racine à l’aide de la propriété PersonalStorage.RootFolder.
- Obtenez la collection de messages à l’aide de la méthode FolderInfo.GetContents().
- Parcourez les messages de la collection et lisez les champs de chaque message.
L’exemple de code suivant montre comment extraire des messages d’un fichier PST dans C# .NET.
// Charger le fichier Outlook PST
PersonalStorage pst = PersonalStorage.FromFile("PersonalStorage.pst");
// Obtenir le format d'affichage du fichier PST
Console.WriteLine("Display Format: " + pst.Format);
// Obtenir les informations sur les dossiers et les messages
Aspose.Email.Storage.Pst.FolderInfo folderInfo = pst.RootFolder;
// Appelez la méthode récursive pour extraire les fichiers msg de chaque dossier
ExtractMsgFiles(folderInfo, pst);
///<summary>
/// Il s'agit d'une méthode récursive pour afficher le contenu d'un dossier
///</summary>
///<param name="folderInfo"></param>
///<param name="pst"></param>
private static void ExtractMsgFiles(Aspose.Email.Storage.Pst.FolderInfo folderInfo, PersonalStorage pst)
{
// Afficher le nom du dossier
Console.WriteLine("Folder: " + folderInfo.DisplayName);
Console.WriteLine("==================================");
// Parcourez tous les messages de ce dossier
Aspose.Email.Storage.Pst.MessageInfoCollection messageInfoCollection = folderInfo.GetContents();
foreach (Aspose.Email.Storage.Pst.MessageInfo messageInfo in messageInfoCollection)
{
Console.WriteLine("Saving message {0} ....", messageInfo.Subject);
// Obtenir le message dans l'instance MapiMessage
MapiMessage message = pst.ExtractMessage(messageInfo);
// Enregistrez ce message sur le disque au format msg
message.Save(message.Subject.Replace(":", " ") + ".msg");
// Enregistrez ce message pour le diffuser au format msg
MemoryStream messageStream = new MemoryStream();
message.Save(messageStream);
}
// Appelez cette méthode de manière récursive pour chaque sous-dossier
if (folderInfo.HasSubFolders == true)
{
foreach (Aspose.Email.Storage.Pst.FolderInfo subfolderInfo in folderInfo.GetSubFolders())
{
ExtractMsgFiles(subfolderInfo, pst);
}
}
}
Extraire les contacts d’un fichier PST en C#
Dans certains cas, vous devrez peut-être extraire les informations des contacts stockées dans un fichier PST. Les étapes suivantes montrent comment accéder aux contacts dans un fichier PST en C#.
- Chargez le fichier PST à l’aide de la méthode PersonalStorage.FromFile().
- Obtenez la référence du dossier de contacts à l’aide de la méthode PersonalStorage.RootFolder.GetSubFolder(“Contacts”).
- Obtenez une collection de contacts à l’aide de la méthode FolderInfo.GetContents().
- Parcourez la collection de contacts et lisez chaque contact ou enregistrez-le.
L’exemple de code suivant montre comment extraire des contacts d’un fichier PST en C#.
// Charger le fichier Outlook PST
PersonalStorage personalStorage = PersonalStorage.FromFile("SampleContacts.pst");
// Obtenir le dossier Contacts
FolderInfo folderInfo = personalStorage.RootFolder.GetSubFolder("Contacts");
// Parcourez tous les contacts de ce dossier
MessageInfoCollection messageInfoCollection = folderInfo.GetContents();
foreach (MessageInfo messageInfo in messageInfoCollection)
{
// Obtenir les coordonnées
MapiMessage mapi = personalStorage.ExtractMessage(messageInfo);
// Diffuser sur MapiContact
MapiContact contact = (MapiContact)mapi.ToMapiMessageItem();
// Afficher certains contenus à l'écran
Console.WriteLine("Name: " + contact.NameInfo.DisplayName);
// Enregistrer sur disque au format MSG
if (contact.NameInfo.DisplayName != null)
{
MapiMessage message = personalStorage.ExtractMessage(messageInfo);
// Débarrassez-vous des caractères illégaux qui ne peuvent pas être utilisés comme nom de fichier
string messageName = message.Subject.Replace(":", " ").Replace("\\", " ").Replace("?", " ").Replace("/", " ");
message.Save(dataDir + "Contacts\\" + messageName + "_out.msg");
}
}
Obtenez une licence API gratuite
Vous pouvez essayer gratuitement Aspose.Email for .NET en obtenant une licence temporaire.
Conclusion
Dans cet article, vous avez appris à lire des fichiers PST par programmation dans C# .NET. De plus, vous avez vu comment lire les informations de dossier, récupérer des e-mails et extraire des contacts d’un fichier PST en C#. En outre, vous pouvez en savoir plus sur Aspose.Email for .NET en utilisant documentation. Vous pouvez également partager vos questions ou requêtes sur notre forum.