OLM'den PST'ye Dönüştürme
Contents
[
Hide
]
OLM Microsoft Outlook for Mac tarafından kullanılan bir veritabanı dosyası formatıdır. OLM dosyaları e-posta mesajları, takvim verileri, kişiler ve uygulama ayarlarını saklar ve Windows Outlook tarafından desteklenmez. Outlook for Mac’ten Outlook for Windows’a bir posta kutusunu taşımak için OLM dosyasını Outlook PST format. Aspose.Email for .NET bunu kod içinde yapmanıza olanak tanır, Microsoft Outlook yüklü olmasa bile.
Dönüşüm Nasıl Çalışır
OLM dosyasını PST’ye dönüştürmek için şu adımları izleyin:
- Şunun bir örneğini oluştur OlmStorage Kaynak OLM dosyasını açmak için sınıf.
- Şununla yeni bir PST dosyası oluşturun: PersonalStorage.Create metod.
- Implement a
GetContainerClassmethod that maps a message class to the corresponding folder (container) class, so each folder is created with the correct type in the PST. - Implement an
AddToPsther klasörü ve mesajlarını OLM dosyasından rekürsif olarak okuyan method - şu methodu kullanarak EnumerateMapiMessages - ve aynı sırayla PST’ye ekler, şu methodu kullanarakAddSubFolderveAddMessagemethods of FolderInfo.
Kod Örneği
Aşağıdaki kod bir OLM dosyasını PST’ye dönüştürmeyi gösterir.
Main metodu:
// 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);
}
}
GetContainerClass methodu:
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";
}
AddToPst methodu:
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);
}
}
tam tersine (PST’den OLM’ye) dönüşüm desteklenmez, çünkü OLM dosyası her zaman Outlook for Mac tarafından bir hesap eklenip sunucu ile senkronize edildiğinde oluşturulur.