العمل مع الرسائل في ملف PST

Contents
[ ]

إضافة رسائل إلى ملفات Outlook PST

إضافة رسالة واحدة إلى ملف PST

إنشاء ملف PST جديد وإضافة مجلدات فرعية توضح كيفية إنشاء ملف PST وإضافة مجلد فرعي إليه. مع Aspose.Email يمكنك أيضًا إضافة رسائل إلى المجلدات الفرعية لملف PST الذي قمت بإنشائه أو تحميله. يوضح المثال البرمجي أدناه كيفية إنشاء ملف PST جديد، إضافة مجلد "Inbox"، ثم إضافة رسالة إلى ذلك المجلد. الـ PersonalStorage والـ FolderInfo يتم استخدام الفئات لأداء المهمة.

  1. استخدم الـ PersonalStorage.create طريقة لبدء ملف PST جديد مع تحديد مسار الملف وإصدار تنسيق الملف كـ Unicode.
  2. إنشاء مجلد جديد باسم "Inbox" في الدليل الجذر لملف PST.
  3. إضافة رسالة إلى مجلد "Inbox" الذي تم إنشاؤه حديثًا باستخدام add_message طريقة.
  4. تحميل الرسالة باستخدام 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()

إضافة رسائل متعددة إلى ملفات PST لأداء أفضل

إضافة رسائل فردية إلى PST يعني المزيد من عمليات الإدخال/الإخراج إلى القرص وبالتالي قد تبطئ الأداء. لتحسين الأداء، يمكن إضافة الرسائل إلى PST بوضعية دفعة، وتقليل عمليات الإدخال/الإخراج.

تحميل وإضافة الرسائل من القرص

الـ add_messages طريقة تتيح لك تحديد نطاق من الرسائل لإضافتها إلى ملف PST. يوضح المثال البرمجي أدناه كيفية إضافة رسائل متعددة من القرص إلى ملف PST لتحسين الأداء:

  1. تعريف دالة عن طريق إنشاء add_messages_in_bulk_mode مع معلمات اسم ملف PST والمجلد الذي يحتوي على الرسائل.
  2. فتح ملف PST المحدد باستخدام PersonalStorage.from_file().
  3. استرجاع المجلد الفرعي "myInbox" من مجلد الجذر في PST.
  4. إضافة الرسائل من المجلد المحدد بالجملة باستخدام folder.add_messages().
  5. استدعِ add_messages_in_bulk_mode() مع ملف PST واسم المجلد كوسيطات.
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")

**استخدام MapiMessageEnumerator العمليات الجماعية

لتبسيط معالجة الرسائل بالجملة، يمكنك تنفيذ الـ MapiMessageEnumerator فئة تتنقل بكفاءة عبر الرسائل المخزنة في مجلد محدد. يوفر البرنامج النصي بلغة بايثون التالي نهجًا منظمًا لتعداد وتكرار رسائل MAPI باستخدام مكتبة Aspose.Email. يعرّف فئتين مساعدتين:

  • MapiMessageEnumerator لقراءة الرسائل من دليل،

  • و MapiMessageCollection لإدارتها أثناء عمليات الدفعات.

يسهل هذا النهج التجول ومعالجة ملفات رسائل MAPI.

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

إضافة رسائل من PST آخر

لاستيراد الرسائل من ملف PST إلى آخر، توفر Aspose.Email الـ FolderInfo.enumerate_mapi_messages() طريقة. يُظهر المثال البرمجي التالي كيفية نسخ الرسائل من مجلد "Inbox" في ملف PST إلى ملف PST آخر:

استخراج الرسائل من ملفات Outlook PST

في قراءة ملفات Outlook PST، استرجاع معلومات المجلدات والمجلدات الفرعية، ناقشنا تحميل ملف Outlook PST وتصفح مجلداته للحصول على أسماء المجلدات وعدد الرسائل فيها. يوضح هذا المقال كيفية الوصول إلى رسائل Outlook PST واستخلاصها: استخراج تفاصيل أساسية للرسالة، عدد العناصر في مجلد، واستخراج عدد محدد من الرسائل للمعالجة أو التحليل.

استخراج معلومات أساسية للرسالة

يظهر المثال البرمجي أدناه كيفية استخراج وعرض المعلومات الرئيسية من رسائل MAPI المخزنة في ملف PST باستخدام مكتبة Aspose.Email. يتم تهيئة PersonalStorage كائن من ملف "Outlook.pst"، يسترجع محتويات مجلد الجذر، ويتنقل عبر كل رسالة. يطبع البرنامج تفاصيل مثل الموضوع، معلومات المرسل، عناوين المستلمين، وقت التسليم، ومحتوى الرسالة، موفرًا نظرة شاملة على كل بريد إلكتروني في ملف PST المحدد.

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)

قراءة متكررة للمجلدات المتداخلة

قد يحتوي ملف Outlook PST على مجلدات متداخلة. للحصول على معلومات الرسائل من هذه المجلدات، بالإضافة إلى المجلدات العليا، استخدم طريقة متكررة لقراءة جميع المجلدات. يوضح المقتطف البرمجي التالي كيفية قراءة ملف Outlook PST وعرض محتويات المجلدات والرسائل بشكل متكرر:

استرجاع إجمالي عدد العناصر في مجلد PST

لاسترجاع إجمالي عدد العناصر (مثل رسائل البريد، المواعيد، المهام، جهات الاتصال، إلخ) الموجودة في مخزن الرسائل، استخدم طريقة get_total_items_count() الخاصة بالـ MessageStore فئة. توفر طريقة مريحة لجمع معلومات سريعة حول حجم وكمية البيانات داخل المخزن. يوضح المثال البرمجي التالي كيفية الحصول على إجمالي عدد العناصر من ملف PST:

import aspose.email as ae

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

count = pst.store.get_total_items_count()

استخراج عدد محدد من الرسائل

لاستخراج عدد محدد من الرسائل من ملف PST، استخدم طريقة get_contents(start_index, count) الخاصة بالـ FolderInfo فئة. تأخذ معاملين:

  • start_index - رقم الرسالة البداية، على سبيل المثال العاشرة؛
  • count - إجمالي عدد الرسائل المراد استرجاعها.

استرجاع مجموعة فرعية فقط من الرسائل عند الحاجة يمكن أن يكون مفيدًا لإدارة كميات كبيرة من بيانات البريد الإلكتروني. يوضح المثال البرمجي التالي تنفيذ هذه الميزة:

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

استخراج المرفقات دون استخراج الرسائل بالكامل

تتيح Aspose.Email للغة بايثون استخراج المرفقات من رسائل PST دون الحاجة إلى استخراج الرسالة بالكامل أولاً. يمكن تنفيذ ذلك باستخدام extract_attachments طريقة الـ PersonalStorage فئة. يظهر المقتطف البرمجي التالي كيفية استخراج المرفقات مع تخطي ملفات .msg:

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)

إضافة ملفات كمرفقات إلى رسائل PST

Microsoft Outlook هو أداة قوية لإدارة رسائل البريد الإلكتروني والتقويمات والمهام وجهات الاتصال وإدخالات اليومية. إلى جانب هذه الوظائف الأساسية، يتيح أيضًا إضافة ملفات إلى مجلدات PST، مما يمكّن المستخدمين من الحفاظ على سجل شامل للمستندات المرتبطة. تبسط Aspose.Email عملية إضافة الملفات إلى مجلد PST، وتعمل بطريقة مشابهة لكيفية تعاملها مع الرسائل وجهات الاتصال والمهام وإدخالات اليومية.

يوضح المقتطف البرمجي التالي كيفية إضافة مستند إلى مجلد PST باستخدام Aspose.Email:

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

ملفات التخزين الشخصي (PST) يمكن أن تحتوي على كمية كبيرة من البيانات، ويتطلب ذلك دمج تصفيات متعددة لإيجاد البيانات التي تطابق معايير معينة. مع الـ PersonalStorageQueryBuilder فئة، تتيح لك Aspose.Email البحث عن سجلات محددة في PST بناءً على معايير بحث معرفة. يمكنك البحث عن رسائل باستخدام معلمات مثل المرسل، المستلم، الموضوع، أهمية الرسالة، وجود مرفقات، حجم الرسالة، وحتى معرف الرسالة. بالإضافة إلى ذلك، الـ PersonalStorageQueryBuilder يمكن استخدامها للبحث داخل المجلدات الفرعية. توفر الأقسام التالية دليلًا شاملًا للبحث في ملفات Outlook PST.

بحث عن رسائل ومجلدات Outlook

يوضح مقتطف الكود التالي كيفية استخدام PersonalStorageQueryBuilder فئة للبحث عن المحتوى في PST بناءً على معايير بحث مختلفة. توضح بشكل خاص البحث في PST بناءً على:

  • أهمية الرسالة.
  • فئة الرسالة.
  • وجود مرفقات.
  • حجم الرسالة.
  • رسائل غير مقروءة.
  • رسائل غير مقروءة مع مرفقات، ومجلدات باسم فرعي محدد.
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)

بحث مع تطابق غير حساس لحالة الأحرف

باستخدام Aspose.Email PersonalStorageQueryBuilder، يمكنك تحديد شروط البحث للرسائل الإلكترونية مع تجاهل حساسية الأحرف، مما يتيح تجربة بحث أكثر مرونة وسهولة للمستخدم. يُظهر المثال البرمجي التالي كيفية تحميل ملف PST، الوصول إلى مجلد "Inbox"، وتطبيق فلاتر بحث غير حساسة لحالة الأحرف لتحديد الرسائل بناءً على معلومات المرسل. هذه الميزة مفيدة خاصةً عند التعامل مع اختلافات الكتابة في بيانات البريد.

بحث في عناوين المواضيع باستخدام كلمات مفتاحية متعددة

استرجاع رسائل أو عناصر محددة من ملف التخزين الشخصي (PST) أو مخزن الرسائل عن طريق تنفيذ either(query1, query2) طريقة الـ PersonalStorageQueryBuilder فئة. تأخذ معلمين يتيحان لك دمج استعلامين مختلفين، query1 و query2، وإيجاد موضوع رسالة يتطابق مع أي من الكلمتين المحددتين. انظر عينة الشيفرة أدناه:

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 وفقاً لمعايير محددة

استرجاع الرسائل التي تطابق تصفية محددة فقط، مثل الموضوع، أو المرسل، أو التاريخ، باستخدام MailQuery فئة. يوضح عينة الشيفرة التالية كيفية استخدام مكتبة Aspose.Email لتحميل ملف PST وتصفية الرسائل داخل مجلد محدد، في هذه الحالة، مجلد "الوارد":

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)

استرجاع الرسائل حسب النوع

Aspose.Email MessageKind التحمل الزائد يسمح لك بالحصول على رسائل من نوع محدد، مثل البريد الإلكتروني فقط، أو المواعيد، أو جهات الاتصال. يوضح عينة الشيفرة التالية كيفية الوصول إلى وتصفية أنواع محددة من الرسائل من مجلد معين:

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)

تقسيم استرجاع الرسائل لملفات PST الكبيرة

عند العمل مع مجلدات تحتوي على عدد كبير من الرسائل، يمكنك استخدام التقسيم لتحميل الرسائل على دفعات باستخدام start_index و count المعلمات. يوضح عينة الشيفرة التالية كيفية الوصول إلى واسترجاع نطاق محدد من رسائل البريد الإلكتروني من ملف PST بدلاً من جميعها مرة واحدة:

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

نقل الرسائل بين المجلدات

يتيح Aspose.Email إمكانية نقل العناصر من مجلد المصدر إلى مجلد آخر في نفس ملف التخزين الشخصي (PST). وهذا يشمل:

  • نقل مجلد محدد إلى مجلد أب جديد.
  • نقل رسائل محددة إلى مجلد جديد.
  • نقل المحتويات إلى مجلد جديد.
  • نقل المجلدات الفرعية إلى مجلد أب جديد.

يعرض المقتطف البرمجي التالي كيفية نقل العناصر مثل الرسائل والمجلدات من مجلد مصدر إلى مجلد آخر في نفس ملف PST.

تحديث خصائص الرسالة

أحيانًا يُطلب تعديل خصائص معينة للرسائل مثل تغيير الموضوع، وضع علامة على أهمية الرسالة والمزيد. يمكن تحقيق تحديث هذه الخصائص داخل ملف PST باستخدام FolderInfo.change_messages طريقة مقدمة من Aspose.Email للغات Python. تعرض هذه المقالة عملية تحديث خصائص الرسائل بشكل جماعي، مما يسمح بتعديلات آلية عبر عدة رسائل داخل ملف PST. أدناه توجد عينة شيفرة توضح كيفية إجراء تحديثات جماعية على خصائص رسائل مختلفة.

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)

تعديل خصائص MAPI المخصصة

في بعض الأحيان قد تحتاج إلى تحديد ووضع علامة على العناصر التي تم معالجتها داخل ملف PST. يقدم Aspose.Email API حلاً لهذه المهمة من خلال استخدام MapiProperty و MapiNamedProperty فئات. تمكّنك هذه الفئات من وضع علامة على العناصر المعالجة عن طريق تعيين خصائص مخصصة لها. أدناه، ستجد طرقًا مفيدة بشكل خاص لإنجاز عملية وضع العلامات هذه:

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

إدارة محتوى ملفات Outlook PST غالباً ما يتضمن إزالة الرسائل غير الضرورية، المجلدات، أو عدة عناصر في آن واحد. يوفر Aspose.Email للغات Python عبر .NET طرقًا فعالة لحذف الرسائل والمجلدات من ملف PST، سواء كنت تحتاج إلى إزالة رسائل بريد إلكتروني فردية، FolderInfo.delete_child_item() طريقة، أو تنفيذ حذف جماعي، FolderInfo.delete_child_items() طريقة، لإدارة ملفات أفضل.

حذف الرسائل من ملفات PST

توفر Aspose.Email الـ FolderInfo فئة للوصول إلى مجلدات محددة في ملف PST. يوضح عينة الشيفرة أدناه كيفية استخدام هذه الفئة للوصول إلى الرسائل وحذفها من المجلد الفرعي "العناصر المرسلة" لملفات PST التي تم تحميلها أو إنشاؤها مسبقاً. على وجه التحديد، تسترجع عدد الرسائل وتحذف العنصر الأول في مجلد "العناصر المرسلة".

  1. يتم تهيئة كائن PST بفتح ملف "Outlook.pst" الموجود في الدليل المحدد باستخدام PersonalStorage.from_file().
  2. يتم الوصول إلى مجلد العناصر المرسلة باستخدام pst.get_predefined_folder(StandardIpmFolder.SENT_ITEMS).
  3. بعد ذلك، تسترجع الشيفرة محتويات مجلد "العناصر المرسلة" باستخدام folder.get_contents()، تحصيها، وتطبع العدد الإجمالي للرسائل في هذا المجلد.
  4. تصل الشيفرة إلى الرسالة الأولى في مجلد "العناصر المرسلة" باستخدام msgsColl[0] وتحذفها باستخدام folder.delete_child_item(msgInfo.entry_id). تستخدم هذه الدالة معرّف الدخول (Entry ID) للرسالة لإزالتها من المجلد.

بعد الحذف، تحصي الشيفرة مرة أخرى الرسائل في مجلد "العناصر المرسلة" وتطبع العدد المحدّث.

حذف العناصر من ملفات PST

في العديد من أنظمة الرسائل أو عملاء البريد الإلكتروني، يُعطى كل عنصر (مثل البريد الإلكتروني، أو الموعد، أو المهمة) معرفًا فريدًا يُسمى معرّف الدخول (Entry ID). الـ delete_item(entry_id) طريقة الـ FolderInfo فئة تأخذ هذا معرّف الدخول كمعامل وتزيل العنصر المقابل من مخزن الرسائل. استخدم الشيفرة التالية لحذف عنصر من مخزن الرسائل:

import aspose.email as ae

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

pst.delete_item(entry_id)

حذف العناصر بالجملة

يمكن استخدام Aspose.Email API لحذف العناصر دفعة واحدة من ملف PST. يتم ذلك باستخدام الـ delete_child_items() طريقة تقبل قائمة من عناصر معرف الدخول (Entry ID) التي تشير إلى العناصر المراد حذفها. تُظهر عينة الشيفرة التالية كيفية حذف العناصر بشكل جماعي من ملف PST.

حذف المجلدات من ملفات PST

قد تحتوي ملفات Outlook PST على مجلدات لم تعد ضرورية. يتيح Aspose.Email للغات Python عبر .NET حذف هذه المجلدات إما بنقلها إلى مجلد العناصر المحذوفة (مما يجعلها قابلة للاسترداد) أو بحذفها نهائيًا. تُظهر الأمثلة التالية كلا النهجين.

نقل مجلد إلى العناصر المحذوفة (حذف ناعم)

الـ move_item طريقة الـ PersonalStorage فئة تسمح باستعادة المجلدات لاحقًا، حيث أنها لا تُحذف نهائيًا بل تُنقل إلى مجلد العناصر المحذوفة. تُظهر عينة الشيفرة التالية كيفية تنفيذ هذه الطريقة في مشروع بايثون:

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)

ميزة هذه الطريقة هي أن المجلد المحذوف يمكن استعادته بسهولة.

استعادة المجلد من العناصر المحذوفة

الـ move_item الطريقة تسمح لك باستعادة مجلد، إذا تم حذفه عن طريق الخطأ، عن طريق نقله مرةً أخرى من العناصر المحذوفة إلى موقعه الأصلي.

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

حذف المجلد نهائيًا من العناصر المحذوفة

الـ delete_child_item الطريقة يمكن استخدامها لأي مجلدات إذا رغبت في حذف مجلد فرعي على الفور وبشكل دائم، متجاوزًا مجلد العناصر المحذوفة. تُظهر عينة الشيفرة التالية كيفية إزالة المجلد بالكامل من العناصر المحذوفة، مما يجعل الاستعادة مستحيلة:

deleted_items_folder.delete_child_item(empty_folder.entry_id)

حذف المجلد نهائيًا على الفور

إذا كان يجب حذف مجلد دون نقله إلى العناصر المحذوفة، فإن delete_child_item الطريقة تضمن الإزالة الفورية والدائمة.

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