Создание резервных копий и восстановление сообщений IMAP в Python

Aspose.Email для Python предлагает методы ImapClient класс для управления сообщениями электронной почты по протоколу IMAP:

  • метод ‘backup’
  • метод ‘restore’

В этой статье показано, как использовать ImapClient класс и его методы для резервного копирования и восстановления сообщений электронной почты в и из PST‑файла. Также рассматривается, как улучшить производительность больших почтовых ящиков с помощью режима мульти‑соединения.

Резервное копирование сообщений IMAP

Чтобы создать резервную копию сообщений электронной почты с IMAP‑сервера, используйте backup метод ImapClient класс. Следующий пример кода показывает, как создать резервную копию папки Inbox в файл .pst:

import aspose.email as ae

# Create an instance of the ImapClient class
imap_client = ae.clients.imap.ImapClient()

# Specify host, username, password, and set port for your client
imap_client.host = "imap.gmail.com"
imap_client.username = username
imap_client.password = password
imap_client.port = 993
imap_client.security_options = ae.clients.SecurityOptions.AUTO

# Get mailbox info
mailbox_info = imap_client.mailbox_info

# Get folder info for the Inbox folder
inbox_info = imap_client.get_folder_info(mailbox_info.inbox.name)

# Create an ImapFolderInfoCollection and add the Inbox folder info
infos = ae.clients.imap.ImapFolderInfoCollection()
infos.add(inbox_info)

# Specify the path to the directory
data_dir = "path/to/your/data/directory"

# Perform the backup operation
settings = ae.clients.imap.BackupSettings
settings.execute_recursively = True
imap_client.backup(infos, data_dir + "\\ImapBackup.pst", settings)

Восстановление сообщений IMAP

Чтобы восстановить сообщения из файла .pst обратно на IMAP‑сервер, используйте restore метод ImapClient класс:

import aspose.email as ae

# Create an instance of the ImapClient class
imap_client = ae.clients.imap.ImapClient()

# Specify host, username, password, and set port for your client
imap_client.host = "imap.gmail.com"
imap_client.username = username
imap_client.password = password
imap_client.port = 993
imap_client.security_options = ae.clients.SecurityOptions.Auto

# Create RestoreSettings with Recursive set to true
settings = ae.clients.imap.RestoreSettings()
settings.recursive = True

# Specify the path to the directory
data_dir = "path/to/your/data/directory"

# Load the PST file
pst = ae.storage.pst.PersonalStorage.from_file(data_dir + "\\ImapBackup.pst")

# Perform the restore operation
imap_client.restore(pst, settings)

Увеличьте производительность с режимом Multi-Connection

Для задач, связанных с большим объёмом данных или множеством электронных сообщений, Aspose.Email предлагает свойство ‘use_multi_connection’ класса ImapClient класс для оптимизации производительности операций, позволяя клиенту открывать несколько соединений с почтовым сервером одновременно. Когда MultiConnectionMode при включении, IMAP‑клиент может выполнять различные задачи (например, получать письма, синхронизировать папки и создавать резервные копии данных) параллельно через разные соединения. Это может значительно сократить общее время, необходимое для выполнения операций. Следующие фрагменты кода демонстрируют, как включить MultiConnection режим для операций резервного копирования и восстановления.

Примечание: Использование нескольких соединений может подпадать под ограничения и политики, установленные почтовым сервером. Некоторые серверы могут накладывать ограничения на количество одновременных соединений, которые можно открыть от одной учётной записи, чтобы избежать перегрузки сервера. Всегда проверяйте условия обслуживания или политики поставщика электронной почты, чтобы убедиться в соблюдении их рекомендаций по использованию, прежде чем включать MultiConnectionMode.

Резервное копирование сообщений с включённым MultiConnection

Следующий фрагмент кода демонстрирует, как выполнить операцию резервного копирования с включённым режимом MultiConnection:

import aspose.email as ae

# Create an instance of the ImapClient class
imap_client = ae.clients.imap.ImapClient()

# Specify host, username, password, and set port for your client
imap_client.host = "imap.gmail.com"
imap_client.username = username
imap_client.password = password
imap_client.port = 993
imap_client.security_options = ae.clients.SecurityOptions.Auto

# Enable MultiConnectionMode
imap_client.use_multi_connection = ae.clients.MultiConnectionMode.ENABLE

# Get mailbox info
mailbox_info = imap_client.mailbox_info

# Get folder info for the Inbox folder
inbox_info = imap_client.get_folder_info(mailbox_info.inbox.name)

# Create an ImapFolderInfoCollection and add the Inbox folder info
infos = ae.clients.imap.ImapFolderInfoCollection()
infos.add(inbox_info)

# Specify the path to the directory
data_dir = "path/to/your/data/directory"

# Perform the backup operation
settings = ae.clients.imap.BackupSettings
settings.execute_recursively = True
imap_client.backup(infos, data_dir + "\\ImapBackup.pst", settings)

Восстановление сообщений с MultiConnection

Следующий фрагмент кода демонстрирует, как выполнить операцию восстановления с включённым режимом MultiConnection.

import aspose.email as ae

# Create an instance of the ImapClient class
imap_client = ae.clients.imap.ImapClient()

# Specify host, username, password, and set port for your client
imap_client.host = "imap.gmail.com"
imap_client.username = username
imap_client.password = password
imap_client.port = 993
imap_client.security_options = ae.clients.SecurityOptions.Auto

# Enable MultiConnectionMode
imap_client.use_multi_connection = ae.clients.MultiConnectionMode.ENABLE

# Create RestoreSettings with Recursive set to true
settings = ae.clients.imap.RestoreSettings()
settings.recursive = True

# Specify the path to the directory
data_dir = "path/to/your/data/directory"

# Load the PST file
pst = ae.storage.pst.PersonalStorage.from_file(data_dir + "\\Outlook.pst")

# Perform the restore operation
imap_client.restore(pst, settings)