PST Dosyasındaki Mesajlarla Çalışma

Mesajları Outlook PST Dosyalarına Ekle

Bir PST Dosyasına Tek Mesaj Ekleyin

Yeni bir PST Dosyası Oluşturun ve Alt Klasörler Ekleyin bir PST dosyası oluşturma ve ona bir alt klasör ekleme yöntemini gösterir. Aspose.Email ile oluşturduğunuz veya yüklediğiniz bir PST dosyasının alt klasörlerine de mesaj ekleyebilirsiniz. Aşağıdaki kod örneği, yeni bir PST dosyası oluşturmayı, bir "Inbox" klasörü eklemeyi ve ardından bu klasöre bir mesaj eklemeyi gösterir. PersonalStorage ve FolderInfo görevi yerine getirmek için sınıflar kullanılır.

  1. Kullan PersonalStorage.create Dosya yolunu ve dosya formatı sürümünü Unicode olarak belirterek yeni bir PST dosyası başlatmak için yöntem.
  2. PST dosyasının kök dizininde "Inbox" adlı yeni bir klasör oluşturun.
  3. Yeni oluşturulan "Inbox" klasörüne mesaj eklemek için şu yöntemi kullanın: add_message metod.
  4. Mesajı şu şekilde yükleyin: MapiMessage.load.
pst = PersonalStorage.create(dataDir + "AddMessagesToPst_out.pst", FileFormatVersion.UNICODE)

# Add new folder "Inbox"
inboxFolder = pst.root_folder.add_sub_folder("Inbox");

# Add message to Inbox Folder
inboxFolder.add_message(MapiMessage.load(dataDir + "MapiMsgWithPoll.msg"))

pst.dispose()

Daha İyi Performans İçin PST Dosyalarına Çoklu Mesaj Ekle

Bireysel mesajları bir PST’ye eklemek, diske daha fazla G/Ç işlemi gerektirir ve bu da performansı yavaşlatabilir. Performansı artırmak için mesajlar toplu olarak PST’ye eklenebilir ve G/Ç işlemleri en aza indirgenir.

Diskten Mesajları Yükle ve Ekle

Bu add_messages metod, bir PST dosyasına eklenecek mesaj aralığını tanımlamanıza olanak tanır. Aşağıdaki kod örneği, performansı artırmak amacıyla diskteki birden fazla mesajı PST dosyasına nasıl ekleyeceğinizi gösterir:

  1. Bir işlev tanımlamak için oluşturun add_messages_in_bulk_mode PST dosya adı ve mesajların bulunduğu klasör için parametrelerle.
  2. Belirtilen PST dosyasını kullanarak açın PersonalStorage.from_file().
  3. PST kök klasöründen "myInbox" alt klasörünü alın.
  4. Belirtilen klasörden mesajları toplu olarak eklemek için kullanarak folder.add_messages().
  5. Çağırın add_messages_in_bulk_mode() PST dosyası ve klasör adı argümanlarıyla birlikte.
from aspose.email.storage.pst import PersonalStorage, StandardIpmFolder, FileFormatVersion

def add_messages_in_bulk_mode(file_name, msg_folder_name):
    with PersonalStorage.from_file(file_name) as personal_storage:
        folder = personal_storage.root_folder.get_sub_folder("myInbox")
        folder.add_messages(message_collection(msg_folder_name))

# Add multiple messages from the specified folder to the PST file for improved performance
add_messages_in_bulk_mode("file.pst", "folder_with_messages")

**Kullan MapiMessageEnumerator Toplu İşlemler için

Toplu mesaj işleme sürecini kolaylaştırmak için şunu uygulayabilirsiniz: MapiMessageEnumerator Belirtilen bir klasörde saklanan mesajlar üzerinde verimli bir şekilde yineleme yapan sınıf. Aşağıdaki Python betiği, Aspose.Email kütüphanesini kullanarak MAPI mesajlarını sayma ve yineleme konusunda yapılandırılmış bir yaklaşım sunar. İki yardımcı sınıf tanımlar:

  • MapiMessageEnumerator bir dizinden mesajları okumak için,

  • ve MapiMessageCollection toplu işlemler sırasında bunları yönetmek için.

Bu yaklaşım, MAPI mesaj dosyalarının gezilmesini ve işlenmesini kolaylaştırır.

import os
from aspose.email.mapi import MapiMessage

# Define a class to enumerate through MAPI message files in a directory
class MapiMessageEnumerator:
    def __init__(self, path):
        self.files = os.listdir(path)
        self.position = -1

    def __next__(self):
        self.position += 1
        if self.position < len(self.files):
            return MapiMessage.from_file(os.path.join(self.path, self.files[self.position]))
        else:
            raise StopIteration

    def __iter__(self):
        return self

# Define a collection class for managing MAPI messages
class MapiMessageCollection:
    def __init__(self, path):
        self.path = path

    def __iter__(self):
        return MapiMessageEnumerator(self.path)


# Iterate through MAPI messages in a specific directory
msg_folder_name = "\\Files\\msg"

# Initialize a collection with the directory containing message files
message_collection = MapiMessageCollection(msg_folder_name)
for message in message_collection:
    # Process each MAPI message object as needed
    pass

Başka bir PST’den Mesaj Ekle

Bir PST dosyasından diğerine mesajları içe aktarmak için Aspose.Email şunu sağlar FolderInfo.enumerate_mapi_messages() metod. Aşağıdaki kod örneği, bir PST dosyasındaki "Inbox" klasöründen başka bir PST dosyasına mesajların nasıl kopyalanacağını gösterir:

Outlook PST Dosyalarından Mesajları Al

İçinde Outlook PST Dosyalarını Okuyun, Klasör ve Alt Klasör Bilgilerini Getirin, Outlook PST dosyasını yüklemeyi ve klasörlerini göz atarak klasör adlarını ve içindeki mesaj sayısını elde etmeyi tartıştık. Bu makale, Outlook PST dosyalarından mesajlara erişme ve çıkarma konularını açıklar: temel mesaj ayrıntılarını al, bir klasördeki öğe sayısını say ve işleme veya analiz için belirli sayıda mesaj çıkar.

Temel Mesaj Bilgilerini Al

Aşağıdaki kod örneği, Aspose.Email kütüphanesini kullanarak bir PST dosyasında depolanan MAPI mesajlarından temel bilgileri nasıl çıkarıp görüntüleyeceğinizi gösterir. Bir PersonalStorage "Outlook.pst" dosyasındaki nesneyi alır, kök klasörün içeriğini getirir ve her iletiyi yinelemeler. Betik, konu, gönderici bilgileri, alıcı adresleri, teslim zamanı ve ileti gövdesi gibi detayları yazdırarak belirtilen PST dosyasındaki her e-postanın kapsamlı bir özetini sunar.

from aspose.email.storage.pst import *
from aspose.email.mapi import MapiMessage

pst = PersonalStorage.from_file("Outlook.pst")

folderInfo = pst.root_folder

messageInfoCollection = folderInfo.get_contents()

for messageInfo in messageInfoCollection:
   mapi = pst.extract_message(messageInfo)

   print("Subject: " + mapi.subject)
   print("Sender name: " + mapi.sender_name)
   print("Sender email address: " + mapi.sender_email_address)
   print("To: ", mapi.display_to)
   print("Cc: ", mapi.display_cc)
   print("Bcc: ", mapi.display_bcc)
   print("Delivery time: ", str(mapi.delivery_time))
   print("Body: " + mapi.body)

İç İçe Klasörlerin Özyinelemeli Okunması

Bir Outlook PST dosyası iç içe klasörler içerebilir. Bunlardan ve üst düzey klasörlerden mesaj bilgilerini almak için tüm klasörleri okumak üzere özyinelemeli bir yöntem kullanın. Aşağıdaki kod parçacığı, bir Outlook PST dosyasını nasıl okuyacağınızı ve klasör ile mesaj içeriklerini özyinelemeli olarak nasıl görüntüleyeceğinizi gösterir:

PST Klasöründe Toplam Öğelerin Sayısını Getir

Mesaj deposunda bulunan toplam öğe sayısını (e-postalar, randevular, görevler, kişiler vb.) almak için get_total_items_count() metodunu kullanın MessageStore sınıf. Depodaki veri boyutu ve hacmi hakkında hızlı bilgi toplamak için kullanışlı bir yol sağlar. Aşağıdaki kod parçacığı, bir PST dosyasındaki toplam öğe sayısını nasıl alacağınızı gösterir:

import aspose.email as ae

pst = ae.storage.pst.PersonalStorage.from_file("my.pst")

count = pst.store.get_total_items_count()

Belirli Sayıda Mesaj Çıkar

Bir PST dosyasından belirli sayıda mesaj çıkarmak için, get_contents(start_index, count) metodunu kullanın FolderInfo sınıf. İki parametre alır:

  • start_index - başlangıç mesajının numarası, örneğin 10.
  • count - alınacak toplam mesaj sayısı.

Bir seferde yalnızca gerekli mesaj alt kümesini almak, büyük miktarda e-posta verisini yönetmek için faydalı olabilir. Aşağıdaki kod örneği bu özelliğin uygulanışını gösterir:

import aspose.email as ae

pst = ae.storage.pst.PersonalStorage.from_file("my.pst")

folder = pst.root_folder.get_sub_folder("Inbox")

# Extracts messages starting from 10th index top and extract total 100 messages
messages = folder.get_contents(10, 100)

PST Dosyalarında Eklerle Çalış

Tüm Mesajı Çıkarmadan Ekleri Çıkar

Aspose.Email for Python, bir PST mesajının tüm mesajını çıkarmaya gerek kalmadan ekleri çıkarmayı sağlar. Bu, şu yöntemle yapılabilir: extract_attachments metodu PersonalStorage sınıf. Aşağıdaki kod parçacığı, .msg dosyalarını atlayarak ekleri nasıl çıkaracağınızı gösterir:

from aspose.email.storage.pst import PersonalStorage

# Open the PST file 
with PersonalStorage.from_file(data_dir + "my.pst") as personal_storage:
    # Get the "Inbox" subfolder from the root folder in the personal storage
    folder = personal_storage.root_folder.get_sub_folder("Inbox")

    # Iterate over each message entry ID in the Inbox folder
    for message_info in folder.enumerate_messages_entry_id():
        # Extract attachments for the current message
        attachments = personal_storage.extract_attachments(message_info)

        # Check if the message has any attachments
        if attachments.count > 0:
            # Iterate over each attachment in the list
            for attachment in attachments:
                # Ignore attachments that are message files (.msg)
                if attachment.long_file_name and attachment.long_file_name.endswith(".msg"):
                    continue
                # Save the attachment with its original file name
                attachment.save(data_dir + attachment.long_file_name)

Dosyaları PST Mesajlarına Ek Olarak Ekle

Microsoft Outlook, e-postaları, takvimleri, görevleri, kişileri ve günlük girişlerini yönetmek için güçlü bir araçtır. Bu temel işlevlerin ötesinde, kullanıcıların ilişkili belgelerin kapsamlı bir kaydını tutmalarını sağlayarak dosyaları PST klasörlerine eklemeye de izin verir. Aspose.Email, dosyaları bir PST klasörüne ekleme sürecini, mesajları, kişileri, görevleri ve günlük girişlerini işlediği gibi basitleştirir.

Aşağıdaki kod parçacığı, Aspose.Email ile bir belgeyi PST klasörüne nasıl ekleyeceğinizi gösterir:

from aspose.email.storage.pst import PersonalStorage, FileFormatVersion

# Create a new PST file
personal_storage = PersonalStorage.create(data_dir + "AddFilesToPst_out.pst", FileFormatVersion.UNICODE)

# Add a new folder to store files
folder = personal_storage.root_folder.add_sub_folder("Files")

# Add a file to the PST folder
folder.add_file(data_dir + "FileToBeAddedToPST.txt", "")

PST Dosyalarında Mesajları Ara ve Filtrele

Personal Storage (PST) dosyaları büyük miktarda veri içerebilir ve belirli kriterlere uyan veriyi bulmak için birden fazla filtreleme uygulanmasını gerektirir. Bununla PersonalStorageQueryBuilder sınıf, Aspose.Email’in tanımlı arama kriterlerine göre bir PST içinde belirli kayıtları aramanızı sağlar. Gönderici, alıcı, konu, mesaj önemi, ek varlığı, mesaj boyutu ve hatta mesaj kimliği gibi parametreleri kullanarak mesaj arayabilirsiniz. Ayrıca, PersonalStorageQueryBuilder alt klasörlerde arama yapmak için kullanılabilir. Aşağıdaki bölümler, Outlook PST dosyalarında arama yapmaya yönelik kapsamlı bir rehber sunar.

Outlook Mesajlarını ve Klasörlerini Ara

Aşağıdaki kod örneği size nasıl kullanılacağını gösterir PersonalStorageQueryBuilder farklı arama kriterlerine göre bir PST içindeki içerikleri aramak için sınıf. Özellikle bir PST’yi şu kriterlere göre aramayı gösterir:

  • Mesaj önemi.
  • Mesaj sınıfı.
  • Eklerin varlığı.
  • Mesaj boyutu.
  • Okunmamış mesajlar.
  • Ekleri olan okunmamış mesajlar ve belirli alt klasör adına sahip klasörler.
from aspose.email.mapi import MapiMessageFlags
from aspose.email.storage.pst import PersonalStorage, PersonalStorageQueryBuilder, MapiImportance

with PersonalStorage.from_file(data_dir + "my.pst") as personal_storage:
    folder = personal_storage.root_folder.get_sub_folder("Inbox")
    builder = PersonalStorageQueryBuilder()

    # High importance messages
    builder.importance.equals(2)
    messages = folder.get_contents(builder.get_query())
    print("Messages with High Imp:", messages.count)

    builder = PersonalStorageQueryBuilder()
    builder.message_class.equals("IPM.Note")
    messages = folder.get_contents(builder.get_query())
    print("Messages with IPM.Note:", messages.count)

    builder = PersonalStorageQueryBuilder()
    # Messages with attachments AND high importance
    builder.importance.equals(2)
    builder.has_flags(MapiMessageFlags.HASATTACH)
    messages = folder.get_contents(builder.get_query())
    print("Messages with atts:", messages.count)

    builder = PersonalStorageQueryBuilder()
    # Messages with size > 15 KB
    builder.message_size.greater(15000)
    messages = folder.get_contents(builder.get_query())
    print("Messages size > 15 KB:", messages.count)

    builder = PersonalStorageQueryBuilder()
    # Unread messages
    builder.has_no_flags(MapiMessageFlags.READ)
    messages = folder.get_contents(builder.get_query())
    print("Unread:", messages.count)

    builder = PersonalStorageQueryBuilder()
    # Unread messages with attachments
    builder.has_no_flags(MapiMessageFlags.READ)
    builder.has_flags(MapiMessageFlags.HASATTACH)
    messages = folder.get_contents(builder.get_query())
    print("Unread msgs with atts:", messages.count)

    # Folder with name 'SubInbox'
    builder = PersonalStorageQueryBuilder()
    builder.folder_name.equals("SubInbox")
    folders = folder.get_sub_folders(builder.get_query())
    print("Folder having subfolder:", folders.count)

    builder = PersonalStorageQueryBuilder()
    # Folders with subfolders
    builder.has_subfolders()
    folders = folder.get_sub_folders(builder.get_query())
    print("Folders with subfolders:", folders.count)

Büyük/Küçük Harfe Duyarsız Eşleşme ile Arama

Aspose.Email’i kullanarak PersonalStorageQueryBuilder, e-posta mesajları için büyük/küçük harf duyarsızlığı göz ardı ederek arama koşulları belirleyebilirsiniz; bu da daha esnek ve kullanıcı dostu bir arama deneyimi sağlar. Aşağıdaki kod örneği, bir PST dosyasını nasıl yükleyeceğinizi, "Inbox" klasörüne nasıl erişeceğinizi ve gönderici bilgisine göre e-postaları bulmak için büyük/küçük harf duyarsız arama filtrelerini nasıl uygulayacağınızı gösterir. Bu özellik, e-posta verilerinde farklı kapitalizasyonlarla çalışırken özellikle yararlıdır.

Birden Çok Anahtar Kelime Kullanarak Konu Satırlarını Ara

Kişisel depolama dosyasından (PST) veya mesaj mağazasından belirli mesajları veya öğeleri, uygulayarak al: either(query1, query2) metodu PersonalStorageQueryBuilder sınıf. İki parametre alır ve iki farklı sorguyu (query1 ve query2) birleştirmenize, iki belirtilen kelimeden herhangi birine uyan mesaj konusunu bulmanıza olanak tanır. Aşağıdaki kod örneğine bakın:

import aspose.email as ae

builder1 = ae.storage.pst.PersonalStorageQueryBuilder()
builder1.subject.contains("Review") # 'Review' is key word for the search

builder2 = ae.storage.pst.PersonalStorageQueryBuilder()
builder2.subject.contains("Error") # 'Error' is also key word for the search

builder = ae.storage.pst.PersonalStorageQueryBuilder()
# message subjects must contain 'Review' or 'Error' words
builder.either(builder1.get_query(), builder2.get_query())


pst = ae.storage.pst.PersonalStorage.from_file("my.pst")

folder = pst.root_folder.get_sub_folder("Inbox")
messages = folder.get_contents(builder.get_query())

for message in messages:
    print(f"Message: {message.subject}")

PST’deki E-postaları Belirli Kriterlere Göre Filtrele

Konu, gönderen veya tarih gibi belirli bir filtreye uyan sadece mesajları, kullanarak al: MailQuery sınıf. Aşağıdaki kod örneği, Aspose.Email kütüphanesini kullanarak bir PST dosyasını yüklemeyi ve belirli bir klasördeki, bu örnekte "Inbox" klasöründeki mesajları filtrelemeyi gösterir:

import aspose.email as ae

# Load the PST file and access a folder
pst = ae.PersonalStorage.from_file("sample.pst")
inbox = pst.root_folder.get_sub_folder("Inbox")

# Create a MailQuery to filter messages by subject
query_builder = ae.MailQueryBuilder()
query_builder.subject.contains("Invoice")

query = query_builder.get_query()

# Enumerate filtered messages
for info in inbox.enumerate_mapi_messages(query):
    print("Subject:", info.subject)

Mesajları Türlerine Göre Getir

Aspose.Email MessageKind aşırı yükleme, yalnızca e-postalar, randevular veya kişiler gibi belirli bir türdeki mesajları almanıza izin verir. Aşağıdaki kod örneği, belirli bir klasörden belirli türdeki mesajlara nasıl erişileceğini ve bunları nasıl filtreleyeceğinizi gösterir:

import aspose.email as ae

# Load the PST and target folder
pst = ae.PersonalStorage.from_file("sample.pst")
inbox = pst.root_folder.get_sub_folder("Inbox")

# Retrieve only email messages (not calendar items, contacts, etc.)
for info in inbox.enumerate_mapi_messages(ae.MessageKind.MAPI_MESSAGE):
    print("Email Message:", info.subject)

Büyük PST Dosyaları için Mesaj Alımını Sayfalama

Çok sayıda mesaj içeren klasörlerle çalışırken, mesajları parçalar halinde yüklemek için sayfalama kullanabilirsiniz; start_index ve count parametreler. Aşağıdaki kod örneği, bir PST dosyasından tüm mesajları bir kerede almayıp belirli bir aralıktaki e-posta mesajlarına nasıl erişileceğini ve bunları alacağınızı gösterir:

import aspose.email as ae

# Load the PST and access the target folder
pst = ae.PersonalStorage.from_file("sample.pst")
inbox = pst.root_folder.get_sub_folder("Inbox")

# Retrieve messages from index 0 to 9
for info in inbox.enumerate_mapi_messages(0, 10):
    print("Paged Message:", info.subject)

Outlook PST İçeriğini Güncelle ve Düzenle

Klasörler Arasında Mesaj Taşıma

Aspose.Email, aynı Kişisel Depolama (PST) dosyasındaki bir kaynak klasörden başka bir klasöre öğeleri taşıma imkanı sağlar. Şunları içerir:

  • Belirtilen klasörü yeni bir üst klasöre taşıma.
  • Belirtilen mesajları yeni bir klasöre taşıma.
  • İçeriği yeni bir klasöre taşıma.
  • Alt klasörleri yeni bir üst klasöre taşıma.

Aşağıdaki kod snippet’i, aynı PST dosyasındaki bir kaynak klasörden başka bir klasöre mesajlar ve klasörler gibi öğeleri nasıl taşıyacağınızı gösterir.

Mesaj Özelliklerini Güncelle

Bazen mesajların konu başlığını değiştirmek, mesaj önceliğini işaretlemek gibi belirli özellikleri değiştirmek gerekir. Bu özellikleri bir PST dosyası içinde güncellemek, şunu kullanarak sağlanabilir: FolderInfo.change_messages Aspose.Email for Python tarafından sağlanan bir yöntem. Bu makale, bir PST dosyasındaki birden çok mesajda otomatik ayarlamalar yapmayı sağlayan toplu mesaj özelliği güncellemelerini gösterir. Aşağıda, çeşitli mesaj özelliklerinde toplu güncellemeler nasıl yapılır, gösteren bir kod örneği bulunmaktadır.

from aspose.email.storage.pst import PersonalStorage, PersonalStorageQueryBuilder
from aspose.email.mapi import MapiPropertyTag, MapiProperty, MapiPropertyCollection

pst_file_path = data_dir + "ya4demia04vb.pst"

# Load the Outlook PST file
with PersonalStorage.from_file(pst_file_path) as personal_storage:
    # Get the required subfolder
    inbox = personal_storage.root_folder.get_sub_folder("Inbox")

    # Find messages having From = "someuser@domain.com"
    query_builder = PersonalStorageQueryBuilder()
    query_builder.from_address.contains("someuser@domain.com")

    # Get contents from query
    messages = inbox.get_contents(query_builder.get_query())

    # Save (MessageInfo, EntryIdString) in a list
    change_list = [message_info.entry_id_string for message_info in messages]

    # Compose the new properties
    updated_properties = MapiPropertyCollection()
    updated_properties.add(
        MapiPropertyTag.SUBJECT_W,
        MapiProperty(MapiPropertyTag.SUBJECT_W, "New Subject".encode("utf-16le"))
    )
    updated_properties.add(
        MapiPropertyTag.IMPORTANCE,
        MapiProperty(MapiPropertyTag.IMPORTANCE, bytearray([0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]))
    )

    # Update messages having From = "someuser@domain.com" with new properties
    inbox.change_messages(change_list, updated_properties)

Özel MAPI Özelliklerini Değiştir

Bazen bir PST dosyasında işlenmiş öğeleri tanımlamanız ve işaretlemeniz gerekebilir. Aspose.Email API, bu görev için şu aracılığıyla bir çözüm sunar: MapiProperty ve MapiNamedProperty sınıflar. Bu sınıflar, işlenmiş öğelere özel özellikler atayarak etiketleme yapmanızı sağlar. Aşağıda, bu işaretleme sürecini gerçekleştirirken özellikle yararlı olacak yöntemleri bulacaksınız:

from uuid import UUID
from aspose.email.storage.pst import PersonalStorage
from aspose.email.mapi import MapiNamedProperty, MapiPropertyCollection
from aspose.email.mapi import MapiPropertyType, MapiProperty, MapiPropertyTag

def generate_named_property_tag(index, data_type):
    return (((0x8000 | index) << 16) | data_type) & 0x00000000FFFFFFFF

def run():
    # Load the Outlook file
    pst_file_path = data_dir + "my.pst"

    with PersonalStorage.from_file(pst_file_path) as personal_storage:
        test_folder = personal_storage.root_folder.get_sub_folder("Inbox")

        # Create the collection of message properties for adding or updating
        new_properties = MapiPropertyCollection()

        # Normal, Custom, and PidLidLogFlags named properties
        mapi_property = MapiProperty(
            MapiPropertyTag.ORG_EMAIL_ADDR_W,
            "test_address@org.com".encode("utf-16le")
        )
        named_property1 = MapiNamedProperty(
            generate_named_property_tag(0, MapiPropertyType.LONG),
            "ITEM_ID",
            UUID("00000000-0000-0000-0000-000000000000"),
            bytearray([0x7B, 0x00, 0x00, 0x00])
        )
        named_property2 = MapiNamedProperty(
            generate_named_property_tag(1, MapiPropertyType.LONG),
            0x0000870C,
            UUID("0006200A-0000-0000-C000-000000000046"),
            bytearray([0x00, 0x00, 0x00, 0x00])
        )
        new_properties.add(named_property1.tag, named_property1)
        new_properties.add(named_property2.tag, named_property2)
        new_properties.add(mapi_property.tag, mapi_property)
        test_folder.change_messages(test_folder.enumerate_messages_entry_id(), new_properties)

# Usage
run()

Outlook PST Dosyalarından Mesajları ve Klasörleri Sil

Outlook PST dosyalarının içeriğini yönetmek genellikle gereksiz mesajları, klasörleri veya birden çok öğeyi bir anda kaldırmayı içerir. Aspose.Email for Python via .NET, bir PST dosyasından mesajları ve klasörleri silmek için etkili yöntemler sunar; bireysel e-postaları kaldırmanız gerektiğinde bile, FolderInfo.delete_child_item() metodu, ya da toplu silmeler gerçekleştirmek, FolderInfo.delete_child_items() metodu, daha iyi dosya yönetimi için.

PST Dosyalarından Mesajları Sil

Aspose.Email şunları sağlar FolderInfo sınıf, bir PST dosyasındaki belirli klasörlere erişmek için kullanılır. Aşağıdaki kod örneği, bu sınıfı daha önce yüklenmiş veya oluşturulmuş bir PST dosyasının Sent alt klasöründen mesajları erişmek ve silmek için nasıl kullanılacağını gösterir. Özellikle, mesaj sayısını alır ve "Sent Items" klasöründeki ilk öğeyi siler.

  1. Bir PST nesnesi, belirtilen dizinde bulunan "Outlook.pst" dosyasını açarak başlatılır: PersonalStorage.from_file().
  2. Sent Items klasörüne şu şekilde erişilir: pst.get_predefined_folder(StandardIpmFolder.SENT_ITEMS).
  3. Ardından, kod "Sent Items" klasörünün içeriğini şu şekilde alır: folder.get_contents(), sayar ve bu klasördeki toplam mesaj sayısını yazdırır.
  4. Kod, "Sent Items" klasöründeki ilk mesaja msgsColl[0] ile erişir ve onu kullanarak siler folder.delete_child_item(msgInfo.entry_id). Bu fonksiyon, mesajın entry ID’sini kullanarak onu klasörden kaldırır.

Silme işleminden sonra, kod "Sent Items" klasöründeki mesajları tekrar sayar ve güncellenmiş sayıyı yazdırır.

PST Dosyalarından Öğeleri Sil

Birçok mesajlaşma sistemi veya e-posta istemcisinde, her öğeye (e-posta, randevu veya görev gibi) entry ID denilen benzersiz bir tanımlayıcı atanır. delete_item(entry_id) metodu FolderInfo sınıf bu entry ID’yi parametre olarak alır ve ilgili öğeyi mesaj mağazasından kaldırır. Mesaj mağazasından bir öğeyi silmek için aşağıdaki kodu kullanın:

import aspose.email as ae

pst = ae.storage.pst.PersonalStorage.from_file("my.pst")

pst.delete_item(entry_id)

Öğeleri Toplu Olarak Sil

Aspose.Email API, bir PST dosyasından öğeleri toplu olarak silmek için kullanılabilir. Bu, aşağıdaki yöntemle gerçekleştirilir: delete_child_items() silinecek öğelere referans veren Entry ID öğelerinin bir listesini kabul eden bir yöntem. Aşağıdaki kod örneği, bir PST dosyasından öğeleri toplu olarak nasıl sileceğinizi gösterir.

PST Dosyalarından Klasörleri Sil

Outlook PST dosyalarında artık ihtiyaç duyulmayan klasörler olabilir. Aspose.Email for Python via .NET, bu klasörleri Deleted Items klasörüne taşıyarak (kurtarılabilir hâle getirerek) ya da kalıcı olarak silerek kaldırmanıza olanak tanır. Aşağıdaki örnekler her iki yaklaşımı da göstermektedir.

Bir Klasörü Deleted Items’a Taşı (Yumuşak Silme)

Bu move_item metodu PersonalStorage sınıf, klasörlerin kalıcı olarak silinmediği, Deleted Items klasörüne taşındığı için daha sonra kurtarılabilmesini sağlar. Aşağıdaki kod örneği, bu yöntemi bir python projesine nasıl uygulayacağınızı gösterir.

import aspose.email as ae

pst = ae.storage.pst.PersonalStorage.from_file("my.pst")

deleted_items_folder = pst.get_predefined_folder(ae.storage.pst.StandardIpmFolder.DELETED_ITEMS)
empty_folder = pst.root_folder.get_sub_folder("Empty folder")
some_folder = pst.root_folder.get_sub_folder("Some folder")
pst.move_item(empty_folder, deleted_items_folder)
pst.move_item(some_folder, deleted_items_folder)

Bu metodun avantajı, silinen klasörün kolayca geri getirilebilmesidir.

Deleted Items’tan Bir Klasörü Geri Yükle

Bu move_item yöntemi, bir klasör yanlışlıkla silinmişse, Deleted Items’tan alıp orijinal konumuna geri taşıyarak klasörü geri yüklemenizi sağlar.

some_folder = pst.root_folder.get_sub_folder("Some folder")
pst.move_item(some_folder, pst.root_folder)

Deleted Items’tan Klasörü Kalıcı Olarak Sil

Bu delete_child_item yöntemi, Deleted Items klasörünü atlayarak bir alt klasörü anında ve kalıcı olarak silmek istediğinizde tüm klasörlerde kullanılabilir. Aşağıdaki kod örneği, klasörü Deleted Items’tan tamamen kaldırarak kurtarmayı imkânsız hale getirmeyi gösterir:

deleted_items_folder.delete_child_item(empty_folder.entry_id)

Bir Klasörü Anında Kalıcı Olarak Sil

Bir klasör, Deleted Items klasörüne taşınmadan silinmek isteniyorsa, delete_child_item yöntemi, anında ve kalıcı kaldırma sağlar.

some_folder = pst.root_folder.get_sub_folder("Some folder")
pst.root_folder.delete_child_item(some_folder.entry_id)