
Microsoft Outlook è disponibile per i sistemi operativi Windows e Mac. Outlook per Mac e Outlook per Windows memorizzano le email degli utenti in file di dati. Questi file di dati consistono in tutte le email, contatti, attività, note e voci di calendario. Outlook per Mac conserva gli elementi della casella di posta nel file OLM, che non è supportato da Outlook per Windows. Pertanto, non è possibile aprire un file OLM di Outlook per Mac in Outlook per Windows. Se vuoi migrare la tua casella di posta da Outlook per Mac a Outlook per Windows, devi convertire il file OLM di Outlook per Mac nel formato di file PST di Outlook. Questo articolo tratta come convertire il file OLM in file PST programmaticamente in C#.
I seguenti argomenti saranno trattati in questo articolo:
- API C# per convertire OLM in PST
- Passaggi per convertire OLM in PST
- Convertire OLM in PST programmaticamente usando C#
API C# per convertire OLM in PST
Per convertire OLM in PST, utilizzeremo Aspose.Email per .NET. È un’API di elaborazione email che consente di manipolare le email e lavorare con i formati di file dei client di posta elettronica più diffusi come Thunderbird, Outlook, ecc. Puoi scaricare la DLL dell’API o installarla da NuGet utilizzando il seguente comando.
PM> Install-Package Aspose.Email
Passaggi per convertire OLM in PST
Possiamo convertire un file OLM in PST seguendo i passaggi indicati di seguito:
- Crea un nuovo file PST e aprilo per la scrittura
- Apri un file OLM sorgente
- Leggi ciascun elemento della casella di posta da OLM e scrivilo in PST
La sezione seguente descrive come trasformare questi passaggi in C# e convertire i file da OLM a PST.
Convertire OLM in PST programmaticamente usando C#
Possiamo convertire OLM in PST programmaticamente in C# seguendo i passaggi indicati di seguito:
- In primo luogo, crea un’istanza della classe OlmStorage per aprire l’OLM sorgente.
- Successivamente, crea un nuovo file PST utilizzando il metodo Create.
- Inoltre, creeremo una funzione
GetContainerClass
che mapperà la classe del messaggio a una classe di cartella, in modo da poter creare cartelle PST con la classe contenitore che corrisponde alla classe del messaggio che contengono. - Infine, crea una funzione
AddToPst
che legge ricorsivamente ciascuna cartella e i suoi messaggi da OLM utilizzando il metodo EnumerateMapiMessages e li aggiunge al PST nello stesso ordine utilizzando i metodi AddSubFolder e AddMessage.
Il seguente esempio di codice mostra come convertire un OLM in un PST in C#.
Metodo principale:
// 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); | |
} | |
} |
Funzione 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"; | |
} |
Funzione 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); | |
} | |
} |
Ottieni una Licenza API Gratuita
Puoi utilizzare Aspose.Email per .NET senza limitazioni di valutazione utilizzando una licenza temporanea gratuita.
Conclusione
In questo articolo, hai imparato come convertire OLM in PST in C# .NET. Inoltre, hai visto come leggere i messaggi dallo storage OLM e scrivere gli elementi nello storage PST programmaticamente. Inoltre, puoi visitare la documentazione per esplorare altre funzionalità di Aspose.Email per .NET. In caso avessi domande, puoi postare nel nostro forum.