Gerenciando Arquivos de Mensagem com Aspose.Email.Outlook

Determinar o tipo de item MAPI em uma pasta PST

Um arquivo PST normalmente contém vários tipos de dados, como mensagens de e‑mail, eventos de calendário, contatos e mais. O MapiItemType A classe da Aspose.Email permite acessar e categorizar diferentes tipos de itens MAPI dentro de um arquivo PST. O código abaixo demonstra como determinar o tipo de um item MAPI em uma pasta 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

Convertendo MSG para mensagem MIME

A API Aspose.Email fornece a capacidade de converter um arquivo MSG em mensagem MIME usando o método ToMailMessage.

Definindo Timeout para Conversão e Carregamento de uma Mensagem

Para limitar o tempo em milissegundos da conversão de mensagem (valor padrão 3 seg), a propriedade timeout do MailConversionOptions classe é usada.

Veja como você pode definir um tempo limite para os processos de conversão e carregamento de mensagens:

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)

Ao definir um tempo limite para os processos de conversão e carregamento de mensagens, você pode controlar o tempo máximo que essas operações podem levar. Depois de definir o tempo limite, você pode prosseguir com seus processos de conversão e carregamento de mensagens.

Processamento de arquivos Outlook Template (OFT)

Carregar, modificar e salvar um arquivo OFT

Modelos Outlook (OFT) oferecem uma maneira prática de simplificar o processo de envio de mensagens de e‑mail repetitivas. Em vez de compor o mesmo e‑mail do zero toda vez, você pode criar uma mensagem no Outlook e salvá‑la como um Modelo Outlook (OFT). Depois, sempre que precisar enviar uma mensagem semelhante, pode gerá‑la rapidamente a partir do modelo. Essa abordagem poupa o esforço de reescrever o mesmo conteúdo no corpo da mensagem, especificar o assunto, a formatação etc.

da Aspose.Email MailMessage classe fornece uma ferramenta poderosa para carregar e manipular arquivos de modelo Outlook (OFT). Uma vez que um modelo Outlook é carregado em uma instância da classe MailMessage, você pode atualizar facilmente propriedades como remetente, destinatário, corpo da mensagem, assunto e vários outros atributos.

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

Após fazer as atualizações necessárias, você pode enviar o e‑mail usando o SmtpClient classe:

# Send the email
smtpClient.send(message)

Salvando arquivo Outlook MSG como modelo

Para isso, você pode usar o MailMessage classe para criar um e‑mail e, em seguida, salvá‑lo como um arquivo OFT. O exemplo de código a seguir mostrará como salvar um e‑mail como um Modelo 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 ou MSG: Determinar o tipo de um MapiMessage

O trecho de código a seguir ilustra como determinar se uma mensagem MAPI carregada representa uma mensagem de e‑mail padrão ou um Modelo 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

Após carregar o arquivo MSG, o código verifica se a propriedade is_template do MapiMessaage A classe é True ou False. Caso retorne false, a mensagem carregada é uma mensagem de e‑mail padrão, não um Modelo do Outlook; caso retorne true, a mensagem não é um e‑mail padrão, é um Modelo do Outlook.

Salvando MapiMessage ou MailMessage como OFT

O SaveOptions é uma classe base abstrata para classes que permitem ao usuário especificar opções adicionais ao salvar um MailMessage em um formato específico. O exemplo de código a seguir demonstra como salvar uma mensagem no formato 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)

Gerenciamento de Mensagens com Assinaturas Digitais

A biblioteca fornece o LoadOptions classe, uma classe base abstrata para classes que permitem ao usuário especificar opções adicionais ao carregar um MailMessage de um formato específico. A opção de preservação de assinatura está ativada por padrão.

Converter de EML para MSG Preservando a Assinatura

O exemplo de código abaixo demonstra como carregar uma mensagem, convertê‑la para o formato MSG e salvar como MSG (a assinatura é preservada por padrão):


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)

Converter mensagens S/MIME de MSG para EML

Aspose.Email permite converter de MSG para EML preservando uma assinatura digital, conforme mostrado no trecho de código a seguir.

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

Definir Categoria de Cor para Arquivos Outlook MSG

Às vezes você pode precisar diferenciar e-mails de importância particular e organizá-los visualmente. A biblioteca oferece uma maneira de fazer isso atribuindo uma cor específica a um item de mensagem. Quando você define uma categoria de cor para um item, isso permite identificar e localizar itens relacionados rapidamente. Use FollowUpManager classe para definir a categoria de cor de uma mensagem como no exemplo de código a seguir:


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)

Acessando Informações de Follow Up de arquivo MSG

Extrair Informações de Recebimento de Leitura e Entrega

O exemplo de código abaixo demonstra como extrair informações do destinatário e seu status de rastreamento de um arquivo de mensagem 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]}")

Criando Mensagens de Encaminhamento e Resposta

Aspose.Email oferece maneiras simples de criar mensagens encaminhadas e de resposta baseadas nas existentes.

Criando uma Mensagem Encaminhada

Você pode usar o ForwardMessageBuilder A classe para criar uma mensagem de encaminhamento definindo a mensagem de origem, remetente, destinatários, assunto e corpo. Mensagens de encaminhamento podem incluir a mensagem original como anexo ou como corpo da mensagem encaminhada. Você tem a flexibilidade de personalizar propriedades adicionais, como anexos, cabeçalhos e opções de formatação. O exemplo de código abaixo mostra como criar uma mensagem de encaminhamento:


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

Criando uma Mensagem de Resposta

O ReplyMessageBuilder A classe é usada para configurar as opções de resposta, incluindo a mensagem de origem, remetente, destinatários, modo de resposta, prefixo do assunto e o corpo da mensagem de resposta. Mensagens de resposta podem ser criadas em diferentes modos de resposta, como "Responder ao Remetente" ou "Responder a Todos", conforme sua necessidade. Você pode personalizar várias propriedades, como anexos, cabeçalhos e opções de formatação para a mensagem de resposta. O exemplo de código abaixo mostra como criar uma mensagem de encaminhamento:

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