Konversi OLM ke PST
Konversi OLM ke PST
OLM (Outlook for Mac) adalah format file yang digunakan oleh Microsoft Outlook untuk Mac guna menyimpan pesan email, kontak, kalender, tugas, dan data lainnya. Ini adalah format file asli untuk Outlook untuk Mac, sehingga tidak mungkin membuka file OLM (Outlook for Mac) di Outlook untuk Windows. Untuk bekerja dengan file OLM di Windows, Aspose Email menyediakan alat yang dirancang khusus untuk menangani file OLM. Pendekatannya adalah mengkonversi file OLM ke format PST (Outlook Data File), yang secara luas didukung di lingkungan Windows. Setelah dikonversi ke format PST, Anda dapat mengimpor data ke Outlook untuk Windows atau klien email kompatibel lainnya.
Pendekatan Utama
Contoh kode berikut menunjukkan cara mengkonversi file OLM Outlook ke file PST menggunakan pustaka Aspose.Email. Ia membaca setiap folder dan pesan yang bersesuaian dari file OLM dan menambahkannya ke file PST baru dengan urutan yang sama.
- Buat sebuah instansi dari OlmStorage kelas untuk membuka file OLM sumber.
- Gunakan PersonalStorage.create metode untuk membuat file PST baru dengan nama file dan versi format yang ditentukan.
- Baca secara rekursif setiap folder dan pesannya dari file OLM.
- Gunakan fungsi add_to_pst untuk menambahkan setiap folder dan pesannya ke file PST, mempertahankan struktur asli.
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)
Kode ini adalah skrip utama untuk memulai proses konversi file OLM ke file PST menggunakan pustaka aspose.email. Ini menunjukkan cara membuka file OLM, membuat file PST baru, dan memanggil fungsi add_to_pst untuk melakukan tugas transfer data. Skrip ini berfungsi sebagai titik masuk untuk migrasi, secara efisien menggunakan fungsi untuk menangani transfer detail folder dan pesan.
Transfer Folder dan Pesan Rekursif
Pendekatan ini memberikan kontrol lebih mendalam atas proses penanganan folder dan pesan saat memigrasi data email dari file OLM ke file PST. Contoh kode di bawah ini menggunakan fungsi add_to_pst yang mendefinisikan logika transfer. Peran utamanya adalah menelusuri secara rekursif folder dan pesan, memastikan mereka ditransfer dan direplikasi dengan benar dalam format PST. Fungsi ini sangat dapat digunakan kembali dan diharapkan menjadi bagian dari aplikasi atau skrip yang lebih besar yang mengelola pembukaan dan pembuatan file tersebut.
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)
Tentukan Tipe Folder dalam PST
Saat mengkonversi file OLM ke PST, kita harus memastikan struktur folder dipertahankan dan setiap folder dalam file PST memiliki tipe yang benar. Tidak seperti PST, folder di OLM tidak memiliki tipe yang telah ditentukan. Untuk mengkategorikan dan mentransfer data dengan benar, ikuti langkah-langkah berikut:
- Baca pesan pertama dari folder OLM dan tentukan tipenya.
- Gunakan tipe pesan ini untuk menghitung tipe folder yang tepat dalam PST menggunakan metode klasifikasi.
- Buat folder dengan tipe yang telah ditentukan dalam file PST.
- Tambahkan pesan ke folder PST yang baru dibuat.
Untuk pesan yang tersisa di folder OLM, kami mengasumsikan mereka termasuk dalam kategori yang sama, karena tipe folder sudah ditetapkan.
Fungsi get_container_class membantu mengkategorikan item Outlook dengan memetakan kelas pesan yang berbeda ke tipe folder PST yang tepat:
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"