PST 파일에서 메시지 작업

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 메시지를 열거하고 반복하는 구조화된 접근 방식을 제공합니다. 두 개의 헬퍼 클래스를 정의합니다:

  • 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 클래스. 두 개의 매개변수를 받습니다:

  • 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 파일에서 첨부 파일 작업

전체 메시지를 추출하지 않고 첨부 파일 추출

Python용 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 폴더에 파일을 추가하는 과정을 간소화합니다.

다음 코드 스니펫은 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) 또는 메시지 저장소에서 특정 메시지 또는 항목을 가져오려면 the 를 구현합니다 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의 이메일 필터링

특정 필터(예: 제목, 발신자, 날짜)와 일치하는 메시지만 가져오려면 using the 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 파일을 위한 메시지 페이징 검색

많은 메시지를 포함하는 폴더를 작업할 때, 페이지네이션을 사용하여 메시지를 청크 단위로 로드할 수 있습니다 using the start_indexcount 매개변수. 다음 코드 샘플은 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 파일 내에서 이러한 속성을 업데이트하려면 the 를 사용합니다 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는 이를 위해 다음을 사용한 솔루션을 제공합니다 MapiPropertyMapiNamedProperty 클래스. 이러한 클래스는 사용자 정의 속성을 할당하여 처리된 항목에 라벨을 지정할 수 있게 합니다. 아래에서는 이 라벨링 작업을 수행하는 데 특히 유용한 메서드를 찾을 수 있습니다:

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은 개별 이메일을 제거하든, FolderInfo.delete_child_item() 메서드, 또는 대량 삭제 수행, FolderInfo.delete_child_items() 메서드, 파일 관리를 개선합니다.

PST 파일에서 메시지 삭제

Aspose.Email은 다음을 제공합니다 FolderInfo 클래스는 PST 파일의 특정 폴더에 접근하기 위해 사용됩니다. 아래 코드 샘플은 이전에 로드하거나 생성한 PST 파일의 Sent 하위 폴더에서 메시지에 접근하고 삭제하는 방법을 보여줍니다. 구체적으로, 메시지 수를 가져오고 "Sent Items" 폴더의 첫 번째 항목을 삭제합니다.

  1. "Outlook.pst" 파일을 지정된 디렉터리에서 열어 PST 객체를 초기화합니다 using PersonalStorage.from_file().
  2. Sent Items 폴더는 다음을 사용하여 접근합니다 pst.get_predefined_folder(StandardIpmFolder.SENT_ITEMS).
  3. 그런 다음, 코드는 "Sent Items" 폴더의 내용을 다음을 사용하여 가져옵니다 folder.get_contents(), 이를 세어 이 폴더의 총 메시지 수를 출력합니다.
  4. 코드는 *msgsColl[0]*을 사용하여 "Sent Items" 폴더의 첫 번째 메시지에 접근하고, 이를 사용하여 삭제합니다 using 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 폴더로 이동시켜 나중에 복구할 수 있게 합니다. 다음 코드 스니펫은 이 메서드를 파이썬 프로젝트에 구현하는 방법을 보여줍니다:

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 로 이동하지 않고 삭제해야 하는 경우, the delete_child_item 메서드는 즉각적이고 영구적인 삭제를 보장합니다.

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