PST ファイルでのメッセージ操作

Contents
[ ]

Outlook PST ファイルにメッセージを追加

単一メッセージを PST ファイルに追加

新しい PST ファイルを作成し、サブフォルダーを追加する PST ファイルを作成しサブフォルダーを追加する方法を示しています。Aspose.Email を使用すれば、作成または読み込んだ PST ファイルのサブフォルダーにメッセージを追加することも可能です。以下のコードサンプルは新しい PST ファイルを作成し、"Inbox" フォルダーを追加し、さらにそのフォルダーにメッセージを追加する方法を示しています。 PersonalStorage および FolderInfo クラスはタスクを実行するために使用されます。

  1. 使用する PersonalStorage.create ファイルパスとファイル形式バージョン(Unicode)を指定して新しい PST ファイルを開始するメソッド。
  2. PST ファイルのルートディレクトリに "Inbox" という名前の新しいフォルダーを作成します。
  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 に追加するとディスクへの I/O が増え、パフォーマンスが低下する可能性があります。パフォーマンス向上のため、メッセージはバルクモードで PST に追加し、I/O 操作を最小限に抑えます。

ディスクからメッセージをロードして追加

この add_messages このメソッドは、PST ファイルに追加するメッセージの範囲を定義できます。以下のコードサンプルは、ディスク上の複数メッセージを PST ファイルに追加してパフォーマンスを向上させる方法を示しています:

  1. 次のように関数を定義します: add_messages_in_bulk_mode PST ファイル名とメッセージがあるフォルダーを引数として指定します。
  2. 指定された PST ファイルを開くには、次を使用します: PersonalStorage.from_file().
  3. PST のルートフォルダーからサブフォルダー "myInbox" を取得します。
  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 指定されたフォルダーに保存されたメッセージを効率的に反復処理するクラスです。以下の Python スクリプトは Aspose.Email ライブラリを使用して MAPI メッセージを列挙・反復処理する構造化されたアプローチを提供し、2 つのヘルパークラスを定義しています:

  • 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 ファイルから別の PST ファイルへメッセージをインポートするには、Aspose.Email が以下を提供します: FolderInfo.enumerate_mapi_messages() メソッド。以下のコードサンプルは、ある PST ファイルの「Inbox」フォルダーから別の PST ファイルへメッセージをコピーする方法を示しています:

Outlook PST ファイルからメッセージを取得

において Outlook PST ファイルを読み取り、フォルダーとサブフォルダーの情報を取得するここでは Outlook PST ファイルのロードとフォルダーの閲覧により、フォルダー名とメッセージ数を取得する方法について説明しました。本記事では Outlook PST ファイルからメッセージにアクセスし抽出する方法を解説します:基本的なメッセージ詳細の取得、フォルダー内アイテム数のカウント、特定数のメッセージ抽出による処理や分析。

基本的なメッセージ情報の取得

以下のコードサンプルは、Aspose.Email ライブラリを使用して PST ファイルに保存された MAPI メッセージから重要情報を抽出・表示する方法を示しています。これにより、 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 クラス。2 つのパラメーターを受け取ります:

  • start_index - 開始メッセージの番号(例:10 番目)。
  • 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 for Python を使用すると、全メッセージを抽出せずに 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 フォルダーへのファイル追加プロセスを簡素化します。

以下のコードスニペットは Aspose.Email を使用して PST フォルダーにドキュメントを追加する方法を示しています:

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 ファイル内のメッセージ検索とフィルタリング

Personal Storage(PST)ファイルは大量のデータを含む可能性があり、特定の条件に合致するデータを見つけるために複数のフィルタリングが必要です。 PersonalStorageQueryBuilder Aspose.Email のクラスを使用すると、定義された検索条件に基づいて PST 内の特定のレコードを検索できます。送信者、受信者、件名、メッセージの重要度、添付ファイルの有無、メッセージサイズ、メッセージ ID などのパラメータでメッセージを検索できます。さらに、 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 クラス。2 つのパラメーターを受け取り、query1 と query2 の 2 つの異なるクエリを組み合わせ、指定した 2 つの単語のいずれかに一致するメッセージの件名を検索できます。以下のコードサンプルをご参照ください。

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 ファイルをロードし、特定のフォルダー(この場合は「Inbox」フォルダー)内のメッセージをフィルタリングする方法を示しています。

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 for 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 for Python via .NET は、個々のメールを削除する場合でも、PST ファイルからメッセージやフォルダーを削除する効率的なメソッドを提供します。 FolderInfo.delete_child_item() メソッド、または一括削除を実行する、 FolderInfo.delete_child_items() メソッド、ファイル管理を改善するために。

PST ファイルからメッセージを削除する

Aspose.Email は以下を提供します FolderInfo クラスは PST ファイル内の特定フォルダーにアクセスするためのものです。以下のコードサンプルは、事前にロードまたは作成された PST ファイルの Sent サブフォルダーからメッセージにアクセスし、削除する方法を示しています。具体的には、メッセージ数を取得し、"Sent Items" フォルダーの最初のアイテムを削除します。

  1. "Outlook.pst" ファイルを指定ディレクトリから開くことで PST オブジェクトが初期化されます。使用するのは PersonalStorage.from_file().
  2. Sent Items フォルダーは次を使用してアクセスされます pst.get_predefined_folder(StandardIpmFolder.SENT_ITEMS).
  3. 次に、コードは "Sent Items" フォルダーの内容を取得します folder.get_contents()、それらをカウントし、このフォルダー内のメッセージ総数を出力します。
  4. コードは "Sent Items" フォルダー内の最初のメッセージに msgsColl[0] でアクセスし、次の方法で削除します folder.delete_child_item(msgInfo.entry_id)。この関数はメッセージのエントリ ID を使用してフォルダーから削除します。

削除後、コードは再び "Sent Items" フォルダー内のメッセージをカウントし、更新された件数を出力します。

PST ファイルからアイテムを削除する

多くのメッセージングシステムやメールクライアントでは、各アイテム(メール、予定、タスクなど)にエントリ ID と呼ばれる一意の識別子が割り当てられます。 delete_item(entry_id) メソッド( FolderInfo クラスはこのエントリ ID をパラメーターとして受け取り、メッセージストアから該当アイテムを削除します。以下のコードを使用してメッセージストアからアイテムを削除してください。

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() 削除対象のアイテムを指すエントリ ID のリストを受け取るメソッド。以下のコードスニペットは、PST ファイルからアイテムを一括で削除する方法を示しています。

PST ファイルからフォルダーを削除する

Outlook PST ファイルには不要なフォルダーが含まれていることがあります。Aspose.Email for Python via .NET は、これらのフォルダーを Deleted Items フォルダーに移動して(復元可能に)削除するか、永久に削除するかを選択できます。以下の例は両方のアプローチを示しています。

フォルダーを Deleted Items に移動する(ソフト削除)

この move_item メソッド( PersonalStorage クラスはフォルダーを削除後も Deleted Items フォルダーに移動するだけで永久に削除されないため、後で復元可能にします。以下のコードスニペットは、Python プロジェクトでこのメソッドを実装する方法を示しています。

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)

このメソッドの利点は、削除されたフォルダーを簡単に復元できることです。

Deleted Items からフォルダーを復元する

この move_item メソッドは、誤って削除されたフォルダーを Deleted Items から元の場所へ戻すことで復元できます。

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

Deleted Items からフォルダーを完全に削除する

この delete_child_item このメソッドは、Deleted Items フォルダーをバイパスしてサブフォルダーをすぐに永久削除したい場合に、任意のフォルダーに使用できます。以下のコードサンプルは、フォルダーを Deleted Items から完全に削除し、復元不可能にする方法を示しています。

deleted_items_folder.delete_child_item(empty_folder.entry_id)

フォルダーを即座に完全削除する

フォルダーを Deleted Items に移動せずに削除する場合は、 delete_child_item メソッドは即時かつ永久的な削除を保証します。

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