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)