Керування файлами повідомлень за допомогою Aspose.Email.Outlook

Визначення типу елемента 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

The 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)

Отримання інформації про подальші дії з файлу 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]}")

Створення листів Forward та Reply

Aspose.Email надає прості способи створювати повідомлення переадресації та відповіді на основі існуючих.

Створення листа‑перенаправлення

Ви можете використати ForwardMessageBuilder клас для створення повідомлення пересилання, встановлюючи вихідне повідомлення, відправника, отримувачів, тему та тіло. Переслані повідомлення можуть містити оригінальний лист як вкладення або як тіло пересланого листа. Ви маєте гнучкість налаштовувати додаткові властивості, такі як вкладення, заголовки та параметри форматування. Нижче наведено приклад коду, який показує, як створити повідомлення пересилання:


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")

Створення відповіді

The ReplyMessageBuilder клас використовується для налаштування параметрів відповіді, включаючи вихідне повідомлення, відправника, отримувачів, режим відповіді, префікс теми та тіло відповіді. Повідомлення відповіді можна створювати у різних режимах, таких як "Reply to Sender" або "Reply to All", згідно з вашими вимогами. Ви можете налаштувати різні властивості, такі як вкладення, заголовки та параметри форматування відповіді. Нижче наведено приклад коду, який показує, як створити повідомлення пересилання:

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")