MapiConversionOptions.setPreserveEmptyDates(boolean)

Определить тип элемента MAPI в папке PST

Файл PST обычно содержит различные типы данных, такие как электронные письма, события календаря, контакты и прочее. MapiItemType класс Aspose.Email позволяет получать доступ и классифицировать различные типы MAPI‑элементов в файле PST. Приведённый ниже код демонстрирует, как определить тип MAPI‑элемента в папке PST:

import aspose.email as ae

pst = ae.storage.pst.PersonalStorage.from_file("test.pst")
folder = pst.root_folder.get_sub_folder("Calendar")
for messageInfo in folder.enumerate_messages():
    msg = pst.extract_message(messageInfo)

    # Get the class type based on msg.SupportedType
    item_type = msg.supported_type

    # Non-supported type. It cannot be accessed as appropriate item type.
    if item_type == ae.mapi.MapiItemType.NONE:
        print("Item type not supported")
    # An email message.
    elif item_type == ae.mapi.MapiItemType.MESSAGE:
        # You can access to MapiMessage properties there.
        # A subject for example
        print(msg.subject)
    # A contact item. Can be accessed as MapiContact.
    elif item_type == ae.mapi.MapiItemType.CONTACT:
        contact = msg.to_mapi_message_item()
        # You can access to MapiContact properties there. 
        # A name_info.display_name for example. 
        print(contact.name_info.display_name)
    # A calendar item. Can be accessed as MapiCalendar.
    elif item_type == ae.mapi.MapiItemType.CALENDAR:
        calendar = msg.to_mapi_message_item()
        # You can access to MapiCalendar properties there. 
        # A location for example. 
        print(calendar.location)
    # A distribution list. Can be accessed as MapiDistributionList.
    elif item_type == ae.mapi.MapiItemType.DIST_LIST:
        dlist = msg.to_mapi_message_item()
        # You can access to MapiDistributionList properties there
    # A Journal entry. Can be accessed as MapiJournal.
    elif item_type == ae.mapi.MapiItemType.JOURNAL:
        journal = msg.to_mapi_message_item()
        # You can access to MapiJournal properties there
    # A StickyNote. Can be accessed as MapiNote.
    elif item_type == ae.mapi.MapiItemType.NOTE:
        note = msg.to_mapi_message_item()
        # You can access to MapiNote properties there
    # A Task item. Can be accessed as MapiTask.
    elif item_type == ae.mapi.MapiItemType.TASK:
        task = msg.to_mapi_message_item()
        # You can access to MapiTask properties there

Конвертация MSG в MIME‑сообщение

API Aspose.Email позволяет конвертировать файл MSG в MIME‑сообщение с помощью метода ToMailMessage.

Установка тайм‑аута для конвертации и загрузки сообщения

Чтобы ограничить время в миллисекундах конвертации сообщения (значение по умолчанию 3 сек), свойство timeout объекта MailConversionOptions используется класс.

Вот как можно установить тайм-аут для процессов конвертации и загрузки сообщений:

import aspose.email as ae

msg = ae.mapi.MapiMessage.load("my.msg")
options = ae.mapi.MailConversionOptions()
options.timeout = 5000
mailMessage = msg.to_mail_message(options)

Устанавливая тайм-аут для процессов конвертации и загрузки сообщений, вы можете контролировать максимальное время выполнения этих операций. После установки тайм-аута вы можете продолжить процессы конвертации и загрузки сообщений.

Обработка файлов Outlook Template (OFT)

Загрузить, изменить и сохранить файл OFT

Шаблоны Outlook (OFT) предоставляют удобный способ упрощения процесса отправки одинаковых писем. Вместо того чтобы каждый раз создавать письмо с нуля, вы можете создать сообщение в Outlook и сохранить его как шаблон Outlook (OFT). Позже, когда понадобится отправить похожее сообщение, вы сможете быстро сгенерировать его из шаблона. Такой подход экономит время на повторном вводе текста тела письма, указании темы, форматировании и т.д.

Aspose.Email MailMessage класс предоставляет мощный инструмент для загрузки и манипуляции файлами шаблонов Outlook (OFT). После загрузки шаблона Outlook в экземпляр класса MailMessage вы легко можете обновлять такие свойства, как отправитель, получатель, тело сообщения, тема и другие атрибуты.

import aspose.email as ae

# Load the OFT file
oft_file_path = "your_template.oft"
mail_message = ae.MailMessage.load(oft_file_path)

# Update properties as needed
mail_message.subject = "Updated Subject"
mail_message.body = "Updated body text."

# Save the updated message as an MSG file
msg_file_path = "updated_message.msg"
mail_message.save(msg_file_path, ae.MailMessageSaveType.outlook_message_format_unicode)

print(f"Updated message saved to {msg_file_path}")

После внесения необходимых изменений вы можете отправить письмо, используя SmtpClient класс:

# Send the email
smtpClient.send(message)

Сохранение файла Outlook MSG как шаблона

Для этой цели вы можете использовать MailMessage класс для создания электронного письма, а затем сохранения его как файл OFT. Приведённый пример кода покажет, как сохранить письмо как шаблон Outlook:

import aspose.email as ae

# Create a new MailMessage
message = ae.MailMessage()
message.subject = "Sample Outlook Template"
message.html_body = "<html><body>This is the body of the email.</body></html>"
message.from_address = ae.MailAddress("your.email@example.com", "Your Name")

# Save the MailMessage as an Outlook Template (OFT) file
oft_file_path = "sample_template.oft"
message.save(oft_file_path, ae.SaveOptions.default_oft)

print(f"Outlook Template saved as {oft_file_path}")

OFT или MSG: Определить тип MapiMessage

Следующий фрагмент кода демонстрирует, как определить, является ли загруженное MAPI‑сообщение обычным электронным письмом или шаблоном Outlook (OFT):

msg = ae.mapi.MapiMessage.Load("message.msg");
isOft = msg.is_template # returns false

msg = ae.mapi.MapiMessage.Load("message.oft");
isOft = msg.IsTemplate; # returns true

После загрузки файла MSG код проверяет, установлен ли параметр is_template у MapiMessaage класс возвращает True или False. Если возвращает false, загруженное сообщение является стандартным электронным письмом, а не шаблоном Outlook; если возвращает true, сообщение является шаблоном Outlook.

Сохранение MapiMessage или MailMessage в формате OFT

Этот SaveOptions является абстрактным базовым классом для классов, позволяющих задавать дополнительные параметры при сохранении MailMessage в определённый формат. Приведённый пример кода демонстрирует, как сохранить сообщение в формат OFT:

import aspose.email as ae

# Save the MailMessage to OFT format
eml = ae.MailMessage.load("message.eml")

eml.save("message.oft", ae.SaveOptions.default_oft)

# or alternative way 2
save_options = ae.MsgSaveOptions(ae.MailMessageSaveType.outlook_template_format)
eml.save("message.oft", save_options)

# or alternative way 3
save_options = ae.SaveOptions.create_save_options(ae.MailMessageSaveType.outlook_template_format)
eml.save("message.oft", save_options)

# Save the MapiMessage to OFT format
msg = ae.mapi.MapiMessage.load("message.msg")

msg.save("message.oft", ae.SaveOptions.default_oft)

# or alternative way 2
save_options = ae.MsgSaveOptions(ae.MailMessageSaveType.outlook_template_format)
msg.save("message.oft", save_options)

# or alternative way 3
save_options = ae.SaveOptions.create_save_options(ae.MailMessageSaveType.outlook_template_format)
msg.save("message.oft", save_options)

Управление сообщениями с цифровыми подписями

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

Конвертация из EML в MSG с сохранением подписи

Пример кода ниже демонстрирует, как загрузить сообщение, конвертировать его в формат MSG и сохранить как MSG (подпись сохраняется по умолчанию):


import aspose.email as ae

# Load mail message
loadOptions = ae.EmlLoadOptions()
message = ae.MailMessage.load("Message.eml", loadOptions)
# Save as MSG
message.save("ConvertEMLToMSG_out.msg", ae.SaveOptions.default_msg_unicode)

Конвертировать сообщения S/MIME из MSG в EML

Aspose.Email позволяет конвертировать из MSG в EML, сохраняя цифровую подпись, как показано в следующем фрагменте кода.

import aspose.email as ae

# Load mail message
loadOptions = ae.EmlLoadOptions()
smime_eml = ae.MailMessage.load("smime.eml", loadOptions)

conversion_options = ae.mapi.MapiConversionOptions(ae.mapi.OutlookMessageFormat.UNICODE)
msg = ae.mapi.MapiMessage.from_mail_message(smime_eml, conversion_options)
# Save File to disk
msg.save("ConvertMIMEMessagesFromMSGToEML_out.msg")

Установка цветовой категории для файлов Outlook MSG

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


import aspose.email as ae

msg = ae.mapi.MapiMessage.load("my.msg")

# Add Two categories
ae.mapi.FollowUpManager.add_category(msg, "Purple Category")
ae.mapi.FollowUpManager.add_category(msg, "Red Category")

# Retrieve the list of available categories
categories = ae.mapi.FollowUpManager.get_categories(msg)

# Remove the specified category and then Clear all categories
ae.mapi.FollowUpManager.remove_category(msg, "Red Category")
ae.mapi.FollowUpManager.clear_categories(msg)

Получение информации о Follow Up из файла MSG

Извлечение информации о получении и доставке

В примере кода ниже показано, как извлечь информацию о получателях и их статус отслеживания из сообщения Outlook (файл MSG):

import aspose.email as ae

msg = ae.mapi.MapiMessage.load("received.msg")

for recipient in msg.recipients:
    print(f"Recipient: {recipient.display_name}")
    print(f"Delivery time:  {recipient.properties[ae.mapi.MapiPropertyTag.RECIPIENT_TRACKSTATUS_TIME_DELIVERY]}")
    print(f"Read time:  {recipient.properties[ae.mapi.MapiPropertyTag.RECIPIENT_TRACKSTATUS_TIME_READ]}")

Aspose.Email предоставляет простые способы создания сообщений forward и reply на основе существующих.

Создание сообщения‑ответа

Вы можете использовать Aspose.Email API предоставляет возможность создавать и форматировать сообщения‑пересылки и‑ответы. класс для создания сообщения пересылки путем задания исходного сообщения, отправителя, получателей, темы и тела. Пересылаемые сообщения могут включать оригинальное сообщение как вложение или как тело пересылаемого сообщения. Вы можете гибко настраивать дополнительные свойства, такие как вложения, заголовки и параметры форматирования. Приведённый ниже пример кода показывает, как создать сообщение пересылки:


import aspose.email as ae

msg = ae.mapi.MapiMessage.load("original.msg")

builder = ae.tools.ForwardMessageBuilder()
builder.addition_mode = ae.tools.OriginalMessageAdditionMode.TEXTPART

forwardMsg = builder.build_response(msg)
forwardMsg.save("forward_out.msg")

Создание ответа (Reply) сообщения

Этот Создание пересылаемых и ответных сообщений класс используется для настройки параметров ответа, включая исходное сообщение, отправителя, получателей, режим ответа, префикс темы и тело сообщения-ответа. Сообщения‑ответы могут создаваться в разных режимах, таких как «Ответить отправителю» или «Ответить всем», в зависимости от ваших требований. Вы можете настроить различные свойства, такие как вложения, заголовки и параметры форматирования ответа. Приведённый ниже пример кода показывает, как создать сообщение пересылки:

import aspose.email as ae

msg = ae.mapi.MapiMessage.load("original.msg")

builder = ae.tools.ReplyMessageBuilder()

# Set ReplyMessageBuilder Properties
builder.reply_all = True
builder.addition_mode = ae.tools.OriginalMessageAdditionMode.TEXTPART
builder.response_text = "<p><b>Dear Friend,</b></p> I want to do is introduce my co-author and co-teacher. <p><a href=\"www.google.com\">This is a first link</a></p><p><a href=\"www.google.com\">This is a second link</a></p>";

replyMsg = builder.build_response(msg)
replyMsg.save("reply_out.msg")