Mengonversi OLM ke PST
Contents
[
Hide
]
OLM adalah format file basis data yang digunakan Microsoft Outlook untuk Mac. File OLM menyimpan pesan email, data kalender, kontak, dan pengaturan aplikasi, dan tidak didukung oleh Outlook untuk Windows. Untuk memigrasikan kotak surat dari Outlook untuk Mac ke Outlook untuk Windows, Anda perlu mengonversi file OLM ke Outlook PST format. Aspose.Email untuk .NET memungkinkan Anda melakukan ini dalam kode, tanpa harus menginstal Microsoft Outlook.
Cara Konversi Bekerja
Untuk mengonversi file OLM ke PST, ikuti langkah-langkah berikut:
- Buat sebuah instansi dari OlmStorage kelas untuk membuka file OLM sumber.
- Buat file PST baru dengan PersonalStorage.Create metode.
- Implementasikan sebuah
GetContainerClassmetode yang memetakan kelas pesan ke kelas folder (kontainer) yang sesuai, sehingga setiap folder dibuat dengan tipe yang benar di PST. - Implementasikan sebuah
AddToPstmetode yang membaca secara rekursif setiap folder dan pesannya dari file OLM - menggunakan EnumerateMapiMessages - dan menambahkannya ke PST dalam urutan yang sama, menggunakanAddSubFolderdanAddMessagemetode dari FolderInfo.
Contoh Kode
Kode berikut menunjukkan cara mengonversi file OLM ke PST.
Metode 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);
}
}
Metode 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";
}
Metode 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);
}
}
Konversi ke arah sebaliknya (PST ke OLM) tidak didukung, karena file OLM selalu dibuat oleh Outlook untuk Mac saat akun ditambahkan dan disinkronkan dengan server mail.