在 Python 中备份和恢复 IMAP 邮件

Aspose.Email for 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)

通过多连接模式提升性能

对于涉及大量数据或大量邮件的任务,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)