Conversione da OLM a PST
Contents
[
Hide
]
OLM è un formato di file di database usato da Microsoft Outlook per Mac. I file OLM memorizzano messaggi email, dati di calendario, contatti e impostazioni dell’applicazione, e non sono supportati da Outlook per Windows. Per migrare una casella di posta da Outlook per Mac a Outlook per Windows, devi convertire il file OLM nel formato Outlook PST formato. Aspose.Email per .NET ti permette di farlo con il codice, senza che Microsoft Outlook sia installato.
Come Funziona la Conversione
Per convertire un file OLM in PST, segui questi passaggi:
- Crea un’istanza di OlmStorage classe per aprire il file OLM sorgente.
- Crea un nuovo file PST con il PersonalStorage.Create metodo.
- Implementa un
GetContainerClassmetodo che mappa una classe di messaggio alla corrispondente classe di cartella (contenitore), così ogni cartella viene creata con il tipo corretto nel PST. - Implementa un
AddToPstmetodo che legge ricorsivamente ogni cartella e i suoi messaggi dal file OLM - usando EnumerateMapiMessages - e li aggiunge al PST nello stesso ordine, usando ilAddSubFoldereAddMessagemetodi di FolderInfo.
Esempio di Codice
Il codice seguente mostra come convertire un file OLM in PST.
Metodo Main:
// create an instance of OlmStorage class to open the source OLM
using (var olm = new OlmStorage("my.olm"))
// create a new PST file
using (var pst = PersonalStorage.Create("my.pst", FileFormatVersion.Unicode))
{
// recursively read each folder and its messages
// and add them to the PST in the same order
foreach (var olmFolder in olm.FolderHierarchy)
{
AddToPst(pst.RootFolder, olmFolder);
}
}
Metodo GetContainerClass:
public string GetContainerClass(string messageClass)
{
if (messageClass.StartsWith("IPM.Contact") || messageClass.StartsWith("IPM.DistList"))
{
return "IPF.Contact";
}
if (messageClass.StartsWith("IPM.StickyNote"))
{
return "IPF.StickyNote";
}
if (messageClass.StartsWith("IPM.Activity"))
{
return "IPF.Journal";
}
if (messageClass.StartsWith("IPM.Task"))
{
return "IPF.Task";
}
if (messageClass.StartsWith("IPM.Appointment") || messageClass.StartsWith("IPM.Schedule.meeting"))
{
return "IPF.Appointment";
}
return "IPF.Note";
}
Metodo AddToPst:
public void AddToPst(FolderInfo pstFolder, OlmFolder olmFolder)
{
FolderInfo pstSubFolder = pstFolder.GetSubFolder(olmFolder.Name);
foreach (var msg in olmFolder.EnumerateMapiMessages())
{
if (pstSubFolder == null)
{
pstSubFolder = pstFolder.AddSubFolder(olmFolder.Name, GetContainerClass(msg.MessageClass));
}
pstSubFolder.AddMessage(msg);
}
if (pstSubFolder == null)
{
pstSubFolder = pstFolder.AddSubFolder(olmFolder.Name);
}
foreach (var olmSubFolder in olmFolder.SubFolders)
{
AddToPst(pstSubFolder, olmSubFolder);
}
}
La conversione nella direzione opposta (da PST a OLM) non è supportata, perché un file OLM è sempre creato da Outlook per Mac quando un account viene aggiunto e sincronizzato con il server di posta.