Recursos Utilitários - MailMessage

Mensagens de E‑mail contendo anexos TNEF

O formato Transport Neutral Encapsulation Format (TNEF) é um formato proprietário de anexo de e‑mail usado pelo Microsoft Outlook e Microsoft Exchange Server. A API Aspose.Email permite ler mensagens de e‑mail que contêm anexos TNEF e modificar o conteúdo do anexo. O e‑mail pode então ser salvo como e‑mail normal ou no mesmo formato, preservando os anexos TNEF. Este artigo apresenta diferentes exemplos de código para trabalhar com mensagens que contêm anexos TNEF. Também mostra como criar arquivos EML TNEF a partir de arquivos MSG do Outlook.

Leitura de Mensagem Preservando Anexos TNEF

O trecho de código a seguir mostra como ler a mensagem preservando anexos TNEF.

from aspose.email import MailMessage, SaveOptions, EmlLoadOptions, MessageFormat, FileCompatibilityMode

options = EmlLoadOptions()
# This will Preserve the TNEF attachment as it is, file contains the TNEF attachment
options.preserve_tnef_attachments = True

eml = MailMessage.load(data_dir + "message.eml", options)
for attachment in eml.attachments:
    print(attachment.name)

Criando TNEF EML a partir de MSG

Os arquivos MSG do Outlook às vezes contêm informações, como tabelas e estilos de texto, que podem ser alterados se forem convertidos para EML. Criar mensagens TNEF a partir desses arquivos MSG permite manter a formatação e até enviar essas mensagens pelos clientes de e‑mail preservando a formatação. A propriedade convert_as_tnef é usada para conseguir isso. O trecho de código a seguir mostra como criar EML TNEF a partir de MSG.

from aspose.email.mapi import MapiMessage, MailConversionOptions, OutlookMessageFormat

mapi_msg = MapiMessage.from_file(data_dir + "message.msg")

mail_conversion_options = MailConversionOptions()
mail_conversion_options.convert_as_tnef = True

message = mapi_msg.to_mail_message(mail_conversion_options)

Para criar o TNEF, o código de exemplo a seguir pode ser usado.

from aspose.email import MailMessage, SaveOptions, MsgLoadOptions, MessageFormat, FileCompatibilityMode

options = MsgLoadOptions()
# The PreserveTnefAttachments option with MessageFormat.Msg will create the TNEF eml.
options.preserve_tnef_attachments = True

eml = MailMessage.load(eml_file_name, options)

Detectar se uma Mensagem é TNEF

O trecho de código a seguir mostra como detectar se uma mensagem é TNEF.

from aspose.email import MailMessage

mail = MailMessage.load(data_dir + "message.eml")
is_tnef = mail.original_is_tnef

Processamento de Mensagens Devolvidas

É muito comum que uma mensagem enviada a um destinatário devolva (bounce) por qualquer motivo, como endereço inválido. A API Aspose.Email tem a capacidade de processar essa mensagem para verificar se é um e‑mail devolvido ou uma mensagem normal. O método check_bounced do MailMessage retorna um resultado válido se a mensagem for um e‑mail devolvido. Este artigo mostra o uso de BounceResult classe que fornece a capacidade de verificar se uma mensagem é um e‑mail devolvido (bounced). Ela ainda fornece informações detalhadas sobre os destinatários, ação tomada e o motivo da notificação. O trecho de código a seguir demonstra como processar mensagens devolvidas.

from aspose.email import MailMessage, SaveOptions, MsgLoadOptions, MessageFormat, FileCompatibilityMode

mail = MailMessage.load(data_dir + "message.eml")
result = mail.check_bounced()

print("IsBounced: " + str(result.is_bounced))
print("Action: " + str(result.action))
print("Recipient: " + str(result.recipient))
print()
print("Reason: " + str(result.reason))
print("Status: " + str(result.status))
print()

Analisador de Spam Bayesiano

Aspose.Email fornece filtragem de e‑mail usando um analisador de spam Bayesiano. Ele fornece o SpamAnalyzer classe para esse propósito. Este artigo mostra como treinar o filtro para distinguir entre spam e e‑mails normais com base em um banco de palavras.

from aspose.email import MailMessage, SaveOptions, MsgLoadOptions, MessageFormat, FileCompatibilityMode
from aspose.email.antispam import SpamAnalyzer
import os

ham_folder = "/hamFolder"
spam_folder = "/Spam"
test_folder = data_dir
database_file = "SpamFilterDatabase.txt"

def print_result(probability):
    if probability >= 0.5:
        print("The message is classified as spam.")
    else:
        print("The message is classified as not spam.")
    print("Spam Probability: " + str(probability))
    print()

def teach_and_create_database(ham_folder, spam_folder, database_file):
    analyzer = SpamAnalyzer(database_file)
    analyzer.teach_from_directory(ham_folder, True)
    analyzer.teach_from_directory(spam_folder, False)
    analyzer.save_database()

teach_and_create_database(ham_folder, spam_folder, database_file)

test_files = [f for f in os.listdir(test_folder) if f.endswith(".eml")]
analyzer = SpamAnalyzer(database_file)

for file in test_files:
    file_path = os.path.join(test_folder, file)
    msg = MailMessage.load(file_path)
    print(msg.subject)
    probability = analyzer.test(msg)
    print_result(probability)