Python'da PST Dosyaları Oluştur ve Düzenle
Yeni PST Dosyası Oluştur ve Alt Klasörler Ekle
Aspose.Email, sıfırdan Personal Storage Table (PST) dosyaları oluşturma ve onlara alt klasörler ekleme işlevselliği sunar. Şu ile: PersonalStorage sınıf ile, e-posta mesajları, takvim etkinlikleri, kişiler ve diğer verileri depolayan PST dosyalarıyla ilgili işlemleri yönetebilirsiniz.
Aşağıdaki kod örneği, yeni bir depolama dosyası oluşturmayı ve ona bir "Inbox" klasörü eklemeyi gösterir:
- Kullan PersonalStorage.create belirtilen dizin ile yeni bir PST dosyası üretmek için kullanılan yöntem. Dosya şu şekilde oluşturulur:
UNICODEmodern uygulamalarla uyumluluk için format. - PST dosyasının kök klasörüne erişin ve e-posta mesajlarını düzenlemek için "Inbox" adlı yeni bir alt klasör ekleyin.
Container Sınıfı Eşleşme Kontrolü
Aspose.Email for Python, PST dosyalarında klasör oluşturma sırasında doğrulama sürecini geliştiren bir çözüm sunar. enforce_container_class_matching özelliği ile FolderCreationOptions sınıf, PST depolamasına yeni bir klasör eklerken container sınıflarının kesin eşleşmesini sağlar. Bu özellik, PST dosyasındaki organizasyonel hiyerarşiyi, container sınıflarındaki uyumsuzlukları önleyerek korur. ‘EnforceContainerClassMatching’ özelliğini ’true’ olarak ayarladığınızda, üst ve alt klasörlerin container sınıfları eşleşmezse bir istisna fırlatılır; bu, hatalı klasör yapısına karşı bir koruma sağlar. Bu özelliğin varsayılan davranışı ‘false’ olup, klasör oluşturma esnekliği sunar ve gerektiğinde kesin container sınıf eşleşmesini zorlamanıza olanak tanır.
Aşağıdaki kod örneği, enforce_container_class_matching özelliğinin, uyumsuz container sınıflarına sahip klasörler eklenirken bir istisna atılıp atılmayacağını kontrol etmek için nasıl kullanılacağını göstermektedir:
with PersonalStorage.create("storage.pst", FileFormatVersion.Unicode) as pst:
contacts = pst.createpredefinedfolder("Contacts", StandardIpmFolder.Contacts)
# An exception will not arise. EnforceContainerClassMatching is False by default.
contacts.addsubfolder("Subfolder1", "IPF.Note")
# An exception will occur as the container class of the subfolder being added (IPF.Note)
# does not match the container class of the parent folder (IPF.Contact).
contacts.addsubfolder("Subfolder3", FolderCreationOptions(enforcecontainerclassmatching=True, containerclass="IPF.Note"))
Klasör Container Sınıfını Değiştirme
Bazen bir klasör sınıfını değiştirmeniz gerekir. Yaygın bir örnek, farklı tipteki mesajların (randevular, mesajlar vb.) aynı klasöre eklenmesidir. Bu durumlarda, klasör içindeki tüm öğelerin doğru gösterilmesi için klasör sınıfının değiştirilmesi gerekir. Aşağıdaki kod parçacığı, bu amaçla bir PST klasörünün container sınıfını nasıl değiştirileceğini gösterir:
Performansı Artırarak Toplu Mesaj Ekle
PST dosyasına toplu mesaj eklemek, tek tek eklemek yerine, özellikle verimlilik ve performans açısından çeşitli avantajlar sağlar: daha az I/O operasyonu, görevi tamamlama süresinin azalması, sistem kaynaklarının daha verimli kullanılması vb. add_messages yöntemi FolderInfo sınıf, kaynak klasörden elde edilen MAPI mesajları koleksiyonunu hedef klasöre aktarmak için kullanılır.
Başka bir PST’den Mesaj Ekle
Bir PST dosyasının kaynak klasöründen tüm MAPI mesajlarını numaralandırmak ve almak için, FolderInfo sınıf. Ardından, bu mesajları başka bir PST dosyasının hedef klasörüne ekleyin.
import aspose.email as ae
src_pst = ae.storage.pst.PersonalStorage.from_file("source.pst", False)
dest_pst = ae.storage.pst.PersonalStorage.from_file("destination.pst")
# Get the folder by name
src_folder = src_pst.root_folder.get_sub_folder("SomeFolder")
dest_folder = dest_pst.root_folder.get_sub_folder("SomeFolder")
dest_folder.add_messages(src_folder.enumerate_mapi_messages())
Dizinden Mesaj Ekle
Klasörden mesaj eklemek için, dosya açıldıktan ve PST dosyasındaki belirli bir klasöre referans alındıktan sonra, "path" değişkeniyle belirtilen dizinden dosya adları listesi alınır ve her dosyayı bir MapiMessage olarak yüklemek için boş bir MSG listesi oluşturulur. Her yüklenen mesaj msg_list’e eklenir. Aşağıdaki kod örneği, dizinden mesaj ekleme sürecini gösterir:
import aspose.email as ae
import os
pst = ae.storage.pst.PersonalStorage.from_file("my.pst", False)
# Get the folder by name
folder = pst.root_folder.get_sub_folder("SomeFolder")
dirs = os.listdir("path")
msg_list = []
for file in dirs:
msg = ae.mapi.MapiMessage.load(file)
msg_list.append(msg)
folder.add_messages(iter(msg_list))