Class PersonalStorage
Contents
[
Hide
]PersonalStorage class
Provides functionality to access and manipulate the PST (Personal Storage Table) files used by Microsoft Outlook.
public class PersonalStorage : IDisposable
Constructors
Name | Description |
---|---|
PersonalStorage(TraversalExceptionsCallback) | Initializes a new instance of the PersonalStorage class. Allows setting a callback method for handling exceptions that occur during PST traversal. |
Properties
Name | Description |
---|---|
CanWrite { get; } | Gets a value indicating whether the current pst supports writing. |
Format { get; } | Gets the file format. |
IsUnicode { get; } | Gets a value indicating whether the PST file format is Unicode. There are two versions of the PST file format: Unicode and ANSI. |
RootFolder { get; } | Gets the root folder of PST. |
Store { get; } | Gets the PST message store. |
Methods
Name | Description |
---|---|
static Create(Stream, FileFormatVersion) | Creates the PST in a stream. |
static Create(string, FileFormatVersion) | Creates the new PST file with the specified file name. |
static Create(Stream, FileFormatVersion, bool) | Creates the PST in a stream. |
static Create(Stream, FileFormatVersion, CancellationToken) | Creates the PST in a stream. |
static Create(string, FileFormatVersion, CancellationToken) | Creates the new PST file with the specified file name. |
static Create(Stream, FileFormatVersion, bool, CancellationToken) | Creates the PST in a stream. |
static FromFile(string) | Load PST from file. |
static FromFile(string, bool) | Load PST from file. |
static FromFile(string, CancellationToken) | Load PST from file. |
static FromFile(string, PersonalStorageLoadOptions) | Load PST from file. |
static FromFile(string, bool, CancellationToken) | |
static FromFile(string, PersonalStorageLoadOptions, CancellationToken) | Load PST from file. |
static FromStream(Stream) | Load PST from stream. |
static FromStream(Stream, bool) | Load PST from stream. |
static FromStream(Stream, CancellationToken) | Load PST from file. |
static FromStream(Stream, PersonalStorageLoadOptions) | Load PST from stream. |
static FromStream(Stream, bool, CancellationToken) | |
static FromStream(Stream, PersonalStorageLoadOptions, CancellationToken) | Load PST from file. |
ChangeMessage(string, MapiPropertyCollection) | Changes the message properties. |
ConvertTo(FileFormat) | Converts the current object to the specified format. |
CreatePredefinedFolder(string, StandardIpmFolder) | Creates the standard interpersonal message (IPM) folder. |
CreatePredefinedFolder(string, StandardIpmFolder, bool) | Creates the standard interpersonal message (IPM) folder. |
DeleteItem(string) | Deletes the item (folder or message) by it’s entryId |
Dispose() | Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. |
EnumerateMessages(string) | Exposes the enumerator, which supports an iteration of messages in folder. |
EnumerateMessages(string, int, int) | Exposes the enumerator, which supports an iteration of messages in folder. |
ExtractAttachments(MessageInfo) | Extracts the attachments. |
ExtractAttachments(string) | Extracts the attachments. |
ExtractMessage(byte[]) | Get the message from PST. |
ExtractMessage(MessageInfo) | Get the message from PST. |
ExtractMessage(string) | Get the message from PST. |
ExtractProperty(byte[], long) | Gets the specified property of item, without extract the item fully. |
ExtractRecipients(MessageInfo) | Extracts the recipients. |
ExtractRecipients(string) | Extracts the recipients. |
FindAndExtractSoftDeletedItems() | Finds and extracts soft-deleted messages from the PST. |
FindMessages(string) | Finds the identifiers of messages for for the current folder. It might be useful in case of reading corrupted pst when the GetContents and EnumerateMessages methods could throw an exception. |
FindSubfolders(string) | Finds the identifiers of subfolders for for the current folder. It might be useful in case of reading corrupted pst when the GetSubfolders and EnumerateFolders methods could throw an exception. |
GetFolderById(byte[]) | Gets the personal folder from PST. |
GetFolderById(string) | Gets the personal folder from PST. |
GetParentFolder(byte[]) | Gets the parent folder of message. |
GetParentFolder(string) | Gets the parent folder of message. |
GetPredefinedFolder(StandardIpmFolder) | Gets the standard interpersonal message (IPM) folder from PST. Outlook can create a number of default folders, such as Outbox, Deleted Items, Sent Items etc. |
Load(Stream) | Load PST from stream. This method is used when a PersonalStorage object is created using the constructor. |
Load(string) | Load PST from file. This method is used when a PersonalStorage object is created using the constructor. |
MergeWith(Stream[]) | Merges the pst storage with one or more other pst streams. Thus, the combined stream are sources. |
MergeWith(string[]) | Merges the pst storage with one or more other pst files. Thus, the combined files are sources. |
MoveItem(FolderInfo, FolderInfo) | Moves a specified folder to a new parent folder within the current pst. |
MoveItem(MessageInfo, FolderInfo) | Moves a specified message to a new folder within the current pst. |
SaveAs(Stream, FileFormat) | Saves the current object to a specified file format in a stream. |
SaveAs(string, FileFormat) | Saves the current object to a specified file format in a different file. |
SaveMessageToStream(string, Stream) | Saves the message, with specified entryID, to a stream. |
SplitInto(IList<MailQuery>, string) | Splits the pst storage based on criteria. |
SplitInto(long, string) | Splits the pst storage into less sized parts. |
SplitInto(IList<MailQuery>, string, string) | Splits the pst storage based on criteria. |
SplitInto(long, string, string) | Splits the pst storage into less sized parts. |
TryToGetFolderById(string, out FolderInfo) | Gets the folder associated with the specified entry ID. |
TryToSaveMessage(string, Stream) | Saves the message, with specified entryID, to a stream. |
Events
Name | Description |
---|---|
event ItemMoved | Occurs when an item is moved to the another folder. |
event StorageProcessed | Occurs in splitting and merging operations when a new chunk of pst is created or the next file is processed and is to be merged. |
event StorageProcessing | Occurs before the srorage is processed. The event is raised before processing the next storage in merging or splitting operations. |
Remarks
The PersonalStorage class encapsulates methods for creating, opening, and working with the contents of PST files including emails, appointments, contacts, tasks, and other personal information.
Examples
This code serves as a way to browse and extract messages from a PST file, printing metadata about each folder and message, extract and saving the actual messages as .msg files.
[C#]
// Open the PST file by creating an instance of PersonalStorage
using (var pst = PersonalStorage.FromFile("storage.pst"))
{
// Retrieve the total number of items in the PST file
var totalItemsCount = pst.Store.GetTotalItemsCount();
// Write the total items count to the console
Console.WriteLine($"Total items count: {totalItemsCount}");
// Iterate through each subfolder within the root folder of the PST
foreach (var folderInfo in pst.RootFolder.GetSubFolders())
{
// Write the display name of the folder to the console
Console.WriteLine($"Folder: {folderInfo.DisplayName}");
// Write the total number of items in the folder to the console
Console.WriteLine($"Total items: {folderInfo.ContentCount}");
// Write the count of unread items in the folder to the console
Console.WriteLine($"Total unread items: {folderInfo.ContentUnreadCount}");
// Enumerate through each message in the current folder
foreach (var messageInfo in folderInfo.EnumerateMessages())
{
// Write the subject of the message to the console
Console.WriteLine($"Subject: {messageInfo.Subject}");
// Extract the full message object from the messageInfo
var msg = pst.ExtractMessage(messageInfo);
// Save the message as a .msg file, using its subject as the filename
msg.Save($"{msg.Subject}.msg");
}
}
}
[Visual Basic]
' Open the PST file by creating an instance of PersonalStorage
Using pst As PersonalStorage = PersonalStorage.FromFile("storage.pst")
' Retrieve the total number of items in the PST file
Dim totalItemsCount As Integer = pst.Store.GetTotalItemsCount()
' Write the total items count to the console
Console.WriteLine($"Total items count: {totalItemsCount}")
' Iterate through each subfolder within the root folder of the PST
For Each folderInfo In pst.RootFolder.GetSubFolders()
' Write the display name of the folder to the console
Console.WriteLine($"Folder: {folderInfo.DisplayName}")
' Write the total number of items in the folder to the console
Console.WriteLine($"Total items: {folderInfo.ContentCount}")
' Write the count of unread items in the folder to the console
Console.WriteLine($"Total unread items: {folderInfo.ContentUnreadCount}")
' Enumerate through each message in the current folder
For Each messageInfo In folderInfo.EnumerateMessages()
' Write the subject of the message to the console
Console.WriteLine($"Subject: {messageInfo.Subject}")
' Extract the full message object from the messageInfo
Dim msg As MailItem = pst.ExtractMessage(messageInfo)
' Save the message as a .msg file, using its subject as the filename
msg.Save($"{msg.Subject}.msg")
Next
Next
End Using
See Also
- namespace Aspose.Email.Storage.Pst
- assembly Aspose.Email