OLM'yi PST'ye Dönüştür
OLM’yi PST’ye Dönüştür
OLM (Outlook for Mac), Microsoft Outlook for Mac tarafından e-posta iletileri, kişiler, takvimler, görevler ve diğer verileri depolamak için kullanılan bir dosya biçimidir. Outlook for Mac’in yerel dosya formatıdır, bu nedenle bir Outlook for Mac (OLM) dosyasını Outlook for Windows’ta açmak mümkün değildir. Windows’ta OLM dosyalarıyla çalışmak için Aspose Email, OLM dosyalarını işlemek üzere özel olarak tasarlanmış araçlar sunar. Yaklaşımı, OLM dosyalarını Windows ortamlarında geniş çapta desteklenen PST (Outlook Veri Dosyası) formatına dönüştürmektir. PST formatına dönüştürüldükten sonra verileri Outlook for Windows’a veya diğer uyumlu e-posta istemcilerine aktarabilirsiniz.
Ana Yaklaşım
Aşağıdaki kod örneği, Aspose.Email kütüphanesini kullanarak bir Outlook OLM dosyasını PST dosyasına nasıl dönüştüreceğinizi gösterir. OLM dosyasındaki her klasörü ve ilgili iletileri okur ve aynı sırayla yeni PST dosyasına ekler.
- Şunun bir örneğini oluştur OlmStorage Kaynak OLM dosyasını açmak için sınıf.
- Kullan PersonalStorage.create Belirtilen dosya adı ve format sürümüyle yeni bir PST dosyası oluşturmak için yöntem.
- OLM dosyasındaki her klasörü ve içindeki iletileri özyinelemeli olarak okuyun.
- Orijinal yapıyı koruyarak her klasörü ve içindeki iletileri PST dosyasına eklemek için add_to_pst fonksiyonunu kullanın.
import aspose.email as ae
olm = ae.storage.olm.OlmStorage("my.olm")
pst = ae.storage.pst.PersonalStorage.create("my.pst", ae.storage.pst.FileFormatVersion.UNICODE)
for folder in olm.folder_hierarchy:
add_to_pst(pst.root_folder, folder)
Bu kod, aspose.email kütüphanesini kullanarak bir OLM dosyasını PST dosyasına dönüştürme sürecini başlatan ana betiktir. Bir OLM dosyasını nasıl açacağınızı, yeni bir PST dosyası oluşturacağınızı ve veri aktarım görevini gerçekleştirmek için add_to_pst fonksiyonunu nasıl çağıracağınızı gösterir. Bu betik, geçişin giriş noktası olarak hizmet eder ve fonksiyonu verimli bir şekilde kullanır.
Özyinelemeli Klasör ve İleti Transferi
Bu yaklaşım, OLM dosyasından PST dosyasına e-posta verileri aktarılırken klasör ve ileti işleme sürecinde daha derin bir kontrol sağlar. Aşağıdaki kod örneği, aktarım mantığını tanımlayan add_to_pst fonksiyonunu kullanır. Temel görevi, klasörler ve iletiler içinde özyinelemeli olarak gezinmek, bunların PST formatında doğru şekilde aktarılıp kopyalanmasını sağlamaktır. Bu fonksiyon son derece yeniden kullanılabilir ve bu dosyaların açılması ve oluşturulması işlemlerini yöneten daha büyük bir uygulama veya betiğin parçası olarak kullanılmayı bekler.
def add_to_pst(pst_folder, olm_folder):
pst_sub_folder = pst_folder.get_sub_folder(olm_folder.name)
for msg in olm_folder.enumerate_mapi_messages():
if pst_sub_folder is None:
pst_sub_folder = pst_folder.add_sub_folder(olm_folder.name, get_container_class(msg.message_class))
pst_sub_folder.add_message(msg)
if pst_sub_folder is None:
pst_sub_folder = pst_folder.add_sub_folder(olm_folder.name)
for olm_sub_folder in olm_folder.sub_folders:
add_to_pst(pst_sub_folder, olm_sub_folder)
PST’de Klasör Tiplerini Belirleme
Bir OLM dosyasını PST’ye dönüştürürken klasör yapısının korunmasını ve PST dosyasındaki her klasörün doğru tipe sahip olmasını sağlamalıyız. PST’nin aksine OLM’deki klasörlerin önceden tanımlı tipleri yoktur. Verileri doğru şekilde sınıflandırmak ve taşımak için aşağıdaki adımları izleyin:
- Bir OLM klasöründen ilk mesajı okuyun ve tipini belirleyin.
- Bu mesaj tipini kullanarak sınıflandırma yöntemiyle PST’de uygun klasör tipini hesaplayın.
- PST dosyasında belirlenen tipte bir klasör oluşturun.
- Mesajı yeni oluşturulan PST klasörüne ekleyin.
OLM klasöründeki kalan mesajların aynı kategoriye ait olduğunu varsayıyoruz, çünkü klasör tipi zaten belirlenmiş.
The get_container_class fonksiyonu, farklı ileti sınıflarını doğru PST klasör tiplerine eşleyerek Outlook öğelerini sınıflandırmaya yardımcı olur:
def get_container_class(message_class):
if message_class.startswith("IPM.Contact") or message_class.startswith("IPM.DistList"):
return "IPF.Contact"
if message_class.startswith("IPM.StickyNote"):
return "IPF.StickyNote"
if message_class.startswith("IPM.Activity"):
return "IPF.Journal"
if message_class.startswith("IPM.Task"):
return "IPF.Task"
if message_class.startswith("IPM.Appointment") or message_class.startswith("IPM.Schedule.meeting"):
return "IPF.Appointment"
return "IPF.Note"