Python で PST ファイルを作成および整理する
新しい PST ファイルを作成しサブフォルダーを追加する
Aspose.Email は、ゼロから Personal Storage Table(PST)ファイルを作成し、サブフォルダーを追加する機能を提供します。これにより PersonalStorage クラスを使用すると、メールメッセージ、カレンダーイベント、連絡先などのデータを格納する PST ファイルに関連する操作を管理できます。
次のコードサンプルは、新しいストレージファイルを作成し、"Inbox" フォルダーを追加する方法を示しています。
- 使用する PersonalStorage.create 指定ディレクトリで新しい PST ファイルを生成するメソッド。ファイルは以下を使用して作成されます
UNICODEモダンアプリケーションとの互換性のためのフォーマット。 - PST ファイルのルートフォルダーにアクセスし、メールメッセージを整理するために "Inbox" という名前の新しいサブフォルダーを追加します。
コンテナクラス一致チェック
Aspose.Email for Python は、PST ファイルでフォルダー作成時の検証プロセスを強化するソリューションを提供します。enforce_container_class_matching プロパティを使用することで FolderCreationOptions クラスを使用すると、PST ストレージに新しいフォルダーを追加する際にコンテナクラスの厳密な一致を保証できます。この機能は、コンテナクラスの不一致を防止し、PST ファイル内の階層構造を維持するのに役立ちます。‘EnforceContainerClassMatching’ を ’true’ に設定すると、親フォルダーと子フォルダーのコンテナクラスが一致しない場合に例外がスローされ、誤ったフォルダー構造から保護します。このプロパティのデフォルト動作は ‘false’ で、フォルダー作成時の柔軟性を提供しつつ、必要に応じて厳格なコンテナクラスの一致を強制できます。
次のコードサンプルは、enforce_container_class_matching プロパティを使用して、コンテナクラスが一致しないフォルダーを追加する際に例外をスローするかどうかを制御する方法を示しています。
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"))
フォルダーコンテナクラスの変更
フォルダークラスを変更する必要がある場合があります。一般的な例として、異なるタイプ(予定、メッセージなど)のメッセージが同じフォルダーに追加されるケースがあります。このような場合、フォルダー内のすべての要素が正しく表示されるようにフォルダークラスを変更する必要があります。以下のコードスニペットは、PST 内のフォルダーのコンテナクラスを変更する方法を示しています。
パフォーマンス向上のための一括メッセージ追加
個別に追加するのではなく、一括で PST ファイルにメッセージを追加することで、効率とパフォーマンスの面で多くの利点があります。I/O 操作の削減、タスク完了時間の短縮、システムリソースの効率的な利用などです。add_messages メソッドは FolderInfo クラスは、ソースフォルダーから取得した MAPI メッセージのコレクションを宛先フォルダーへ転送するために使用されます。
別の PST からメッセージを追加
PST ファイルのソースフォルダーからすべての MAPI メッセージを列挙して取得するには、enumerate_mapi_messages() メソッドを使用します。 FolderInfo クラス。その後、これらのメッセージを別の PST ファイルの宛先フォルダーに追加します。
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())
ディレクトリからメッセージを追加
ディレクトリからメッセージを追加するには、ファイルを開き PST 内の特定フォルダーへの参照を取得した後、"path" 変数で指定されたディレクトリからファイル名のリストを取得し、空の MSG リストを作成して各ファイルを MapiMessage としてロードします。各ロード済みメッセージを msg_list に追加します。以下のコードサンプルは、ディレクトリからメッセージを追加するプロセスを示しています。
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))