
Microsoft Outlook está disponible para sistemas operativos Windows y Mac. Outlook para Mac y Outlook para Windows almacenan correos electrónicos de usuario en archivos de datos. Estos archivos de datos consisten en todos los correos electrónicos, contactos, tareas, notas y elementos del calendario. Outlook para Mac mantiene elementos de correo en un archivo OLM, que no es compatible con Outlook para Windows. Por lo tanto, no es posible abrir un archivo de Outlook para Mac (OLM) en Outlook para Windows. Si deseas migrar tu correo desde Outlook para Mac a Outlook para Windows, debes convertir el archivo OLM de Outlook para Mac al formato de archivo PST de Outlook. Este artículo cubre cómo convertir un archivo OLM a un archivo PST programáticamente en C#.
Los siguientes temas se cubrirán en este artículo:
- API de C# para convertir OLM a PST
- Pasos para convertir OLM a PST
- Convertir OLM a PST programáticamente usando C#
API de C# para convertir OLM a PST
Para convertir OLM a PST, utilizaremos Aspose.Email para .NET. Es una API de procesamiento de correo electrónico que te permite manipular correos y trabajar con formatos de archivo de clientes de correo electrónico populares como Thunderbird, Outlook, etc. Puedes descargar la DLL de la API o instalarla desde NuGet usando el siguiente comando.
PM> Install-Package Aspose.Email
Pasos para convertir OLM a PST
Podemos convertir un archivo OLM a PST siguiendo los pasos que se indican a continuación:
- Crear un nuevo archivo PST y abrirlo para escritura
- Abrir un archivo OLM de origen
- Leer cada elemento de correo del OLM y escribirlo en el PST
La siguiente sección describe cómo transformar estos pasos en C# y convertir archivos de OLM a PST.
Convertir OLM a PST programáticamente usando C#
Podemos convertir OLM a PST programáticamente en C# siguiendo los pasos que se indican a continuación:
- Primero, crea una instancia de la clase OlmStorage para abrir el OLM de origen.
- A continuación, crea un nuevo archivo PST usando el método Create.
- Además, crearemos una función
GetContainerClass
que mapeará la clase de mensaje a una clase de carpeta, de modo que podamos crear carpetas PST con la clase de contenedor que corresponda a la clase de mensaje que contienen. - Finalmente, crea una función
AddToPst
que lea recursivamente cada carpeta y sus mensajes del OLM usando el método EnumerateMapiMessages y los agregue al PST en el mismo orden usando los métodos AddSubFolder y AddMessage.
El siguiente ejemplo de código muestra cómo convertir un OLM a un PST en C#.
Método principal:
// create an instance of OlmStorage class to open source OLM | |
using (var olm = new OlmStorage("my.olm")) | |
// create a new PST file | |
using (var pst = PersonalStorage.Create("my.pst", FileFormatVersion.Unicode)) | |
{ | |
// recursively reads each folder and its messages | |
// and adds them to the PST in the same order | |
foreach (var olmFolder in olm.FolderHierarchy) | |
{ | |
AddToPst(pst.RootFolder, olmFolder); | |
} | |
} |
Función 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"; | |
} |
Función 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); | |
} | |
} |
Obtener una Licencia de API Gratuita
Puedes usar Aspose.Email para .NET sin limitaciones de evaluación usando una licencia temporal gratuita.
Conclusión
En este artículo, has aprendido cómo convertir OLM a PST en C# .NET. Además, has visto cómo leer mensajes del almacenamiento OLM y escribir elementos en el almacenamiento PST programáticamente. Aparte de eso, puedes visitar la documentación para explorar otras características de Aspose.Email para .NET. En caso de que tengas alguna pregunta, puedes publicarla en nuestro foro.