Программирование с Thunderbird

Чтение сообщений

Mozilla Thunderbird — это клиент электронной почты с открытым исходным кодом и кроссплатформенной архитектурой, разработанный Фондом Mozilla. Он хранит электронные письма в собственной файловой структуре, управляя индексами сообщений и подпапками с помощью проприетарных форматов файлов. Aspose.Email может работать со структурами хранения почты Thunderbird. Класс MboxrdStorageReader позволяет разработчикам читать сообщения из файла хранения почты Mozilla Thunderbird. В этой статье показано, как читать сообщения из хранилища электронной почты Thunderbird:

  1. Откройте файл хранения Thunderbird
  2. Создайте экземпляр класса MboxrdStorageReader и передайте вышеуказанный поток в конструктор.
  3. Вызовите метод read_next_message(), чтобы получить первое сообщение.
  4. Используйте тот же метод read_next_message() в цикле while, чтобы прочитать все сообщения.
  5. Закройте все потоки.

Следующий фрагмент кода показывает, как прочитать все сообщения из хранилища почты Thunderbird.

For complete examples and data files, please go to https://github.com/aspose-email/aspose-email-python-dotnet
reader = MboxrdStorageReader(dataDir + "ExampleMbox.mbox", False)
eml = reader.read_next_message()
# Read all messages in a loop
while (eml is not None):
# Manipulate message - show contents
print("Subject: " + eml.subject)
#Save this message in EML or MSG format
eml.save(eml.subject + "_out.eml", aspose.email.SaveOptions.default_eml)
eml.save(eml.subject + "_out.msg", aspose.email.SaveOptions.default_msg_unicode)
# Get the next message
eml = reader.read_next_message();
# Close the streams
reader.dispose();

Получение свойств сообщения

Чтобы читать и извлекать информацию из файла Mbox, Aspose.Email предоставляет класс MboxStorageReader для создания объекта чтения для файла Mbox и класс MboxLoadOptions для загрузки файла. Следующие свойства класса MboxMessageInfo могут быть использованы для доступа и отображения конкретных деталей сообщения:

  • ‘date’ - Получает дату сообщения.
  • ‘from_address’ - Получает адрес отправителя.
  • ‘subject’ - Получает тему сообщения.
  • ‘to’ - Получает коллекцию адресов, содержащую получателей сообщения.
  • ‘cc’ - Получает коллекцию адресов, содержащую получателей CC.
  • ‘bcc’ - Получает коллекцию адресов, содержащую получателей BCC сообщения.

Следующий кодовый пример демонстрирует использование этих свойств для чтения и извлечения информации о сообщениях из файла Mbox:

import aspose.email as ae

reader = ae.storage.mbox.MboxStorageReader.create_reader(file_name, ae.storage.mbox.MboxLoadOptions())

for mbox_message_info in reader.enumerate_message_info():
    print(f"Subject: {mbox_message_info.subject}")
    print(f"Date: {mbox_message_info.date}")
    print(f"From: {mbox_message_info.from_address}")
    print(f"To: {mbox_message_info.to}")
    print(f"CC: {mbox_message_info.cc}")
    print(f"Bcc: {mbox_message_info.bcc}")

Извлечение сообщений из MBOX по идентификаторам

Чтобы читать сообщения из файла MBOX, Aspose.Email предоставляет метод ‘create_reader()’ класса MboxStorageReader для создания объекта чтения для файла. Он принимает имя файла и MboxLoadOptions в качестве параметров, позволяя пользователю загрузить файл MBOX с конкретными опциями при необходимости.

Чтобы извлечь сообщения, используются следующие методы и свойства:

  • Метод ‘enumerate_message_info()’ класса MboxStorageReader - Перебирает каждое сообщение в файле MBOX.
  • Метод ‘extract_message()’ класса MboxStorageReader - Извлекает каждое сообщение по его идентификатору.
  • Свойство ‘entry_id’ класса MboxMessageInfo - Получает идентификатор записи.

Наконец, сообщение преобразуется в формат EML с использованием EmlLoadOptions.

Ниже приведен пример кода, демонстрирующий использование этих функций для чтения и извлечения сообщений из файла MBOX:

import aspose.email as ae

reader = ae.storage.mbox.MboxStorageReader.create_reader("my.mbox", ae.storage.mbox.MboxLoadOptions())

for mbox_message_info in reader.enumerate_message_info():
    eml = reader.extract_message(mbox_message_info.entry_id, ae.EmlLoadOptions())

Настройка параметров загрузки при чтении сообщений из MBOX

С помощью класса Aspose.Email EmlLoadOptions вы можете задать дополнительные параметры при загрузке MailMessage из формата Eml. Например, вы можете установить параметр для сохранения вложений TNEF при загрузке файла EML с помощью свойства ‘preserve_tnef_attachments’ класса EmlLoadOptions.

Вы можете прочитать следующее электронное сообщение из файла mbox, используя указанные параметры загрузки с помощью метода ‘read_next_message’ класса MboxStorageReader и преобразовать файл в формат PST с помощью метода ‘mbox_to_pst’ класса MailStorageConverter.

Ниже приведен пример кода, демонстрирующий использование этих методов и свойств для работы с файлами хранения электронной почты, включая чтение сообщений из формата mbox, сохранение вложений TNEF и преобразование сообщений из mbox в формат pst:

import aspose.email as ae

reader = ae.storage.mbox.MboxrdStorageReader(fileName, ae.storage.mbox.MboxLoadOptions())
# Чтение сообщений с сохранением вложений tnef.
load_options = ae.EmlLoadOptions()
load_options.preserve_tnef_attachments = True
eml = reader.read_next_message(load_options)
ae.storage.MailStorageConverter.MboxMessageOptions(load_options)
# Преобразование сообщений из mbox в pst с сохранением вложений tnef.
pst = ae.storage.MailStorageConverter.mbox_to_pst("Input.mbox", "Output.pst")

Установка предпочтительного текстового кодирования при загрузке файлов Mbox для чтения

Вы можете указать текстовое кодирование, которое будет использоваться при загрузке файла MBOX. Свойство ‘preferred_text_encoding’, доступное для класса MboxLoadOptions, устанавливает дополнительный параметр и гарантирует, что сообщение с закодированным содержимым будет правильно прочитано и обработано.

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

import aspose.email as ae

load_options = ae.storage.mbox.MboxLoadOptions()
load_options.preferred_text_encoding = 'utf-8'
reader = ae.storage.mbox.MboxrdStorageReader("sample.mbox", load_options)
message = reader.read_next_message()

Преобразование MBOX в PST с сохранением или удалением подписи

Чтобы удалить подпись из файла в процессе преобразования, установите свойство MboxToPstConversionOptions.remove_signature в true.

Следующий пример кода показывает, как использовать это свойство:

import aspose.email as ae

personalStorage = ae.storage.pst.PersonalStorage.create("target.pst", ae.storage.pst.FileFormatVersion.UNICODE)
conversion_options = ae.storage.MboxToPstConversionOptions()
conversion_options.remove_signature = True
ae.storage.MailStorageConverter.mbox_to_pst( ae.storage.mbox.MboxrdStorageReader("source.mbox", ae.storage.mbox.MboxLoadOptions()), personalStorage, "Inbox", conversion_options)

Запись сообщений

Класс MboxrdStorageWriter предоставляет возможность записывать новые сообщения в файл хранения почты Thunderbird. Для записи сообщений:

  1. Откройте файл хранения Thunderbird в FileStream.
  2. Создайте экземпляр класса MboxrdStorageWriter и передайте вышеуказанный поток в конструктор.
  3. Подготовьте новое сообщение с помощью класса MailMessage.
  4. Вызовите метод write_message() и передайте вышеуказанный экземпляр MailMessage, чтобы добавить сообщение в хранилище Thunderbird.
  5. Закройте все потоки.

Следующий фрагмент кода показывает вам, как записывать сообщения в хранилище почты Thunderbird.

For complete examples and data files, please go to https://github.com/aspose-email/aspose-email-python-dotnet
# Initialize MboxStorageWriter and pass the above stream to it
writer =MboxrdStorageWriter(dataDir + "ExampleMBox_out.mbox", False)
# Prepare a new message using the MailMessage class
message = MailMessage("from@domain.com", "to@domain.com", "Eml generated for Mbox", "added from Aspose.Email for Python")
message.is_draft = False
# Add this message to storage
writer.write_message(message)
# Close all related streams
writer.dispose();

Получение общего количества сообщений из файла MBox

Класс MboxrdStorageReader предоставляет возможность прочитать количество элементов, доступных в файле MBox. Это можно использовать для разработки приложений, отображающих процесс активности во время обработки такого файла.

For complete examples and data files, please go to https://github.com/aspose-email/aspose-email-python-dotnet
reader = MboxrdStorageReader(dataDir + "ExampleMbox.mbox", False)
print("Total items in MBox file: " + str(reader.get_total_items_count()))

Получить текущий размер сообщения

For complete examples and data files, please go to https://github.com/aspose-email/aspose-email-python-dotnet
reader = MboxrdStorageReader(dataDir + "ExampleMbox.mbox", False)
eml = reader.read_next_message()
# Read all messages in a loop
while (eml is not None):
print(reader.current_data_size)
eml.dispose();
eml = None
# Close the streams
reader.dispose();