拆分和合并 PST 文件

Aspose.Email API 提供了将单个 PST 文件拆分为多个指定大小的 PST 文件的功能,也可以将多个 PST 文件合并为一个 PST 文件。拆分和合并 PST 的操作均可通过添加事件进行跟踪。

拆分 PST 文件

拆分为多个 PST

以下代码片段展示了如何将存储文件拆分为多个文件:

import os
from aspose.email.storage.pst import PersonalStorage

data_dir = "DataDir_Outlook"
dst_split = os.path.join(data_dir, "Chunks")

# Delete the files if already present
for file in os.listdir(dst_split):
    file_path = os.path.join(dst_split, file)
    if os.path.isfile(file_path):
        os.remove(file_path)

pst_file = os.path.join(data_dir, "pst.pst")

try:
    with PersonalStorage.from_file(pst_file) as personal_storage:
        # Splits into PST chunks with a size of 5MB
        personal_storage.split_into(5000000, dst_split)

except Exception as ex:
    print(str(ex))
    print("This example will only work if you apply a valid Aspose.Email License. "
          "You can purchase a full license or get a 30-day"
          " temporary license from http://www.aspose.com/purchase/default.aspx.")

按特定标准拆分

以下代码片段展示了如何按指定标准拆分存储文件:

import os
from datetime import datetime
from aspose.email.tools.search import MailQueryBuilder
from aspose.email.storage.pst import PersonalStorage

data_dir = "DataDir_Outlook"
path_to_pst = os.path.join(data_dir, "pathToPst")
pst_file = os.path.join(data_dir, "PersonalStorage_New.pst")

# Define search criteria
builder = MailQueryBuilder()
builder.sent_date.since(datetime(2005, 4, 1))
builder.sent_date.before(datetime(2005, 4, 7))
query = builder.get_query()

# Delete existing PST files if any
if os.path.exists(path_to_pst):
    for file in os.listdir(path_to_pst):
        file_path = os.path.join(path_to_pst, file)
        if os.path.isfile(file_path) and file.endswith(".pst"):
            os.remove(file_path)

# Split Personal Storage into multiple PST files based on criteria
with PersonalStorage.from_file(pst_file) as personal_storage:
    personal_storage.split_into(query, path_to_pst)

合并 PST 文件

合并为单个 PST

以下代码片段展示了如何将多个存储文件合并为单个文件:

import os
from aspose.email.storage.pst import PersonalStorage

data_dir = "DataDir_Outlook"
sub_pst = os.path.join(data_dir, "Sub.pst")
merge_folder = os.path.join(data_dir, "MergePST")
total_added = 0

try:
    with PersonalStorage.from_file(sub_pst) as personal_storage:
        # Merge with the PST files located in the separate folder.
        personal_storage.merge_with(os.path.join(merge_folder, "*"))
        print("Total messages added:", total_added)

    print("\nPST merged successfully at", sub_pst)
except Exception as ex:
    print(ex)
    print("This example will only work if you apply a valid Aspose Email License. "
          "You can purchase a full license or get a 30-day temporary license "
          "from http://www.aspose.com/purchase/default.aspx.")

从另一个 PST 合并文件夹

以下代码片段展示了如何合并来自另一个 PST 的文件夹:

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

data_dir = "DataDir_Outlook\\"
destination_pst = PersonalStorage.from_file(data_dir + "destination.pst")
source_pst = PersonalStorage.from_file(data_dir + "source.pst")
total_added = 0

try:
    with destination_pst, source_pst:
        destination_folder = destination_pst.root_folder.add_sub_folder("FolderFromAnotherPst")
        source_folder = source_pst.get_predefined_folder(StandardIpmFolder.DELETED_ITEMS)

        # Merge with the folder from another PST.
        destination_folder.merge_with(source_folder)
        print("Total messages added:", total_added)

except Exception as ex:
    print(ex)
    print("This example will only work if you apply a valid Aspose Email License. "
          "You can purchase a full license or get a 30-day temporary license "
          "from http://www.aspose.com/purchase/default.aspx.")