Conversión de OLM a PST
Contents
[
Hide
]
OLM es un formato de archivo de base de datos usado por Microsoft Outlook para Mac. Los archivos OLM almacenan mensajes de correo, datos de calendario, contactos y configuraciones de la aplicación, y no son compatibles con Outlook para Windows. Para migrar un buzón de Outlook para Mac a Outlook para Windows, necesita convertir el archivo OLM al Outlook PST formato. Aspose.Email para .NET le permite hacer esto en código, sin que Microsoft Outlook esté instalado.
Cómo Funciona la Conversión
Para convertir un archivo OLM a PST, siga estos pasos:
- Cree una instancia de la OlmStorage clase para abrir el archivo OLM de origen.
- Crea un nuevo archivo PST con el PersonalStorage.Create método.
- Implemente un
GetContainerClassmétodo que asigna una clase de mensaje a la clase de carpeta (contenedor) correspondiente, de modo que cada carpeta se cree con el tipo correcto en el PST. - Implemente un
AddToPstmétodo que lee recursivamente cada carpeta y sus mensajes del archivo OLM - usando EnumerateMapiMessages - y los agrega al PST en el mismo orden, usando elAddSubFolderyAddMessagemétodos de FolderInfo.
Ejemplo de Código
El siguiente código muestra cómo convertir un archivo OLM a PST.
Método 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);
}
}
Método 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";
}
Método 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 conversión en la dirección opuesta (PST a OLM) no es compatible, porque un archivo OLM siempre lo crea Outlook para Mac cuando se agrega una cuenta y se sincroniza con el servidor de correo.