Leggi i file PST e recupera le informazioni
Leggi file PST e recupera informazioni
Aspose.Email per .NET fornisce un’API per la lettura dei file PST di Microsoft Outlook. È possibile caricare un file PST dal disco o dallo stream in un’istanza della PersonalStorage classe e ottieni le informazioni sul suo contenuto, ad esempio cartelle, sottocartelle e messaggi. L’API fornisce anche la capacità di includere cartelle di ricerca durante l’attraversamento dei messaggi dalle cartelle PST.
Carica file PST
Un file PST di Outlook può essere caricato in un’istanza della PersonalStorage classe. Il seguente frammento di codice mostra come caricare il file PST.
Visualizza informazioni delle cartelle
Dopo aver caricato il file PST nel PersonalStorage classe, è possibile ottenere le informazioni sul nome visualizzato del file, cartella radice, sottocartelle e conteggio dei messaggi. Il seguente frammento di codice mostra come visualizzare il nome del file PST, le cartelle e il numero di messaggi nelle cartelle.
Ottieni solo cartelle definite dall’utente
I file PST/OST possono contenere cartelle create da un utente. Aspose.Email fornisce la capacità di accedere solo alle cartelle definite dall’utente usando il PersonalStorageQueryBuilder.OnlyFoldersCreatedByUser proprietà. Puoi impostare il PersonalStorageQueryBuilder.OnlyFoldersCreatedByUser proprietà a true per ottenere solo le cartelle definite dall’utente. Il frammento di codice seguente dimostra l’uso di PersonalStorageQueryBuilder.OnlyFoldersCreatedByUser per ottenere le cartelle definite dall’utente.
Verifica se la cartella è predefinita
Quando apri e ispezioni le cartelle all’interno di un file PST (Personal Storage Table), puoi verificare se ogni cartella è di tipo predefinito o una sottocartella di una cartella predefinita, e ottenere le informazioni su ciascuna cartella.
Il FolderInfo.GetPredefinedTypeIl metodo (bool getForTopLevelParent) consente di verificare se una cartella proviene da StandardIpmFolder. Se il parametro getForTopLevelParent è true, il metodo restituisce un StandardIpmFolder valore enum per la cartella genitore di livello superiore. Questo determina se la cartella corrente è una sottocartella di una cartella predefinita. Se il parametro getForTopLevelParent è false, restituisce un StandardIpmFolder valore enum per la cartella corrente.
Il seguente esempio di codice mostra come implementare questa funzionalità nel tuo progetto:
PersonalStorage.FromFile("my.pst"))
{
FolderInfoCollection folders = pst.RootFolder.GetSubFolders();
foreach (FolderInfo folder in folders)
{
Console.WriteLine($"Folder: {folder.DisplayName}");
Console.WriteLine($"Is predefined: {folder.GetPredefinedType(false) != StandardIpmFolder.Unspecified}");
Console.WriteLine("-----------------------------------");
}
}
Recupera informazioni della cartella genitore
Il frammento di codice seguente mostra come recuperare le informazioni della cartella genitore da MessageInfo.
Recupera sottocartella per percorso
Il FolderInfo.GetSubFolder(string name, bool ignoreCase, bool handlePathSeparator) La sovraccarico del metodo ti consentirà di recuperare una sottocartella con il nome specificato dalla cartella PST corrente.
Il metodo accetta i seguenti parametri:
- name - specifica il nome della sottocartella da recuperare.
- ignoreCase - determina se la ricerca del nome della sottocartella deve essere sensibile o insensibile al maiuscolo/minuscolo. Se impostato su true, la ricerca sarà insensibile al caso, altrimenti sarà sensibile al caso.
- handlePathSeparator - specifica se il nome della cartella indicato deve essere trattato come percorso se contiene barre rovesciate. Se impostato su true, il metodo interpreterà il nome della cartella come un percorso, tentando di navigare nella sottocartella usando il percorso. Se impostato su false, il metodo tratterà il nome della cartella come un semplice nome, cercando una sottocartella con corrispondenza esatta del nome.
Il seguente esempio di codice dimostra come implementare questo metodo nel tuo progetto:
var folder = pst.RootFolder.GetSubFolder(@"Inbox\Reports\Jan", true, true);
In this sample, the method will return a ‘Jan’ named folder that is located at the Inbox\Reports\ path relative to the root folder.
Feed RSS e Cartelle Ricercabili
Cartella RSS Feeds standard in PersonalStorage
Aspose.Email rende possibile recuperare un riferimento alla cartella predefinita che contiene i feed RSS. Questo potrebbe essere utile se desideri accedere programmaticamente e manipolare i feed RSS presenti in un file Outlook PST. Assegna il valore di RssFeeds al StandardIpmFolder enum.
Il seguente esempio di codice mostra come ottenere una cartella RSS Feeds.
using (var pst = PersonalStorage.FromFile("my.pst", false))
{
var rssFolder = pst.GetPredefinedFolder(StandardIpmFolder.RssFeeds);
}
Per aggiungere una cartella RSS Feeds, usa il seguente frammento di codice:
using (var pst = PersonalStorage.Create("my.pst", FileFormatVersion.Unicode))
{
var rssFolder = pst.CreatePredefinedFolder("RSS Feeds", StandardIpmFolder.RssFeeds);
}
Analisi delle cartelle ricercabili
Un PST/OST può contenere cartelle ricercabili oltre al tipo normale di cartelle. Aspose.Email fornisce il FolderKind enumeratore per specificare i messaggi da tali cartelle di ricerca con EnumerateFolders e GetSubFolders metodi. Il seguente frammento di codice mostra come analizzare le cartelle ricercabili.
using (PersonalStorage pst = PersonalStorage.FromFile("my.pst"))
{
FolderInfoCollection folders = pst.RootFolder.GetSubFolders(FolderKind.Search | FolderKind.Normal);
// Browse through each folder to display folder name and number of messages
foreach (FolderInfo folder in folders)
{
Console.WriteLine($"Folder: {folder.DisplayName}");
FolderInfoCollection subFolders = folder.GetSubFolders(FolderKind.Search | FolderKind.Normal);
foreach (FolderInfo subFolder in subFolders)
{
Console.WriteLine($"Sub-folder: {subFolder.DisplayName}");
}
}
}
API di attraversamento file PST
L’API di attraversamento consente di estrarre tutti gli elementi PST per quanto possibile, senza generare eccezioni, anche se alcuni dati del file originale sono corrotti. I passaggi seguenti mostrano come utilizzare questa API.
Usa PersonalStorage costruttore e Load metodo invece del metodo FromFile.
Il costruttore consente di definire un metodo di callback.
using (var currentPst = new PersonalStorage((exception, itemId) => { /* Exception handling code. */ }))
Le eccezioni di caricamento e attraversamento saranno disponibili tramite il metodo di callback.
Il Load il metodo restituisce ’true’ se il file è stato caricato con successo e è possibile continuare l’attraversamento. Se un file è corrotto e l’attraversamento non è possibile, restituisce ‘false’.
if (currentPst.Load(inputStream))
Ciò consente di aprire e attraversare anche file PST corrotti senza generare eccezioni. Le eccezioni e gli elementi corrotti saranno gestiti dal metodo di callback.
using (PersonalStorage pst = new PersonalStorage((exception, itemId) => { /* Exception handling code. */ }))
{
if (pst.Load(@"test.pst"))
{
GetAllMessages(pst, pst.RootFolder);
}
}
private static void GetAllMessages(PersonalStorage pst, FolderInfo folder)
{
foreach (var messageEntryId in folder.EnumerateMessagesEntryId())
{
MapiMessage message = pst.ExtractMessage(messageEntryId);
}
foreach (var subFolder in folder.GetSubFolders())
{
GetAllMessages(pst, subFolder);
}
}
Recupera i colori delle categorie degli elementi dai file PST
Aspose.Email consente agli utenti di recuperare le informazioni delle categorie, inclusi nomi e colori, dai file PST. I dati delle categorie possono essere estratti e associati a singoli elementi PST. Usa i seguenti membri API:
- OutlookCategoryColor enum - Rappresenta il colore associato a una categoria.
- PstItemCategory classe - Fornisce proprietà per nome e colore della categoria.
- GetCategories metodo - Recupera un elenco di categorie con i loro nomi e colori.
I seguenti esempi di codice dimostrano come recuperare tutte le categorie disponibili da un file PST e associare quelle associate a un messaggio email specifico.
Recupera le categorie disponibili dal PST
using (var pst = PersonalStorage.FromFile("mailbox.pst"))
{
var categories = pst.GetCategories();
foreach(var category in categories)
{
Console.WriteLine(category);
}
}
Associa un nome di categoria al suo colore
using (var pst = PersonalStorage.FromFile("mailbox.pst"))
{
// Get all categories from the PST
var availableCategories = pst.GetCategories();
// Extract a message from the PST and retrieve the list of category names for the message
var messageCategoryList = FollowUpManager.GetCategories(pst.ExtractMessage(messageInfo));
// Iterate through each category in the message and match it with the PST category list
foreach (var messageCategory in messageCategoryList)
{
var category = availableCategories.Find(c => c.Name.Equals(messageCategory, StringComparison.OrdinalIgnoreCase));
if (category != null)
{
// Print the category name and its associated color
Console.WriteLine(category);
}
else
{
Console.WriteLine($"Category: {messageCategory}, Color: Not found");
}
}
}