Funciones utilitarias - MailMessage
Mensajes de correo que contienen adjuntos TNEF
Transport Neutral Encapsulation Format (TNEF) es un formato propietario de adjuntos de correo usado por Microsoft Outlook y Microsoft Exchange Server. La API Aspose.Email permite leer mensajes de correo que tienen adjuntos TNEF y modificar el contenido del adjunto. El correo puede guardarse entonces como correo normal o en el mismo formato, preservando los adjuntos TNEF. Este artículo muestra diferentes ejemplos de código para trabajar con mensajes que contienen adjuntos TNEF. También muestra cómo crear archivos EML TNEF a partir de archivos MSG de Outlook.
Lectura de mensaje preservando archivos adjuntos TNEF
El siguiente fragmento de código le muestra cómo leer un mensaje preservando los archivos adjuntos 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)
Crear EML TNEF a partir de MSG
Los MSG de Outlook a veces contienen información como tablas y estilos de texto que pueden alterarse si se convierten a EML. Crear mensajes TNEF a partir de dichos archivos MSG permite conservar el formato e incluso enviar dichos mensajes mediante clientes de correo conservando el formato. La propiedad convert_as_tnef se utiliza para lograr esto. El siguiente fragmento de código le muestra cómo crear 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 crear el TNEF, se puede usar el siguiente código de ejemplo.
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 si un mensaje es TNEF
El siguiente fragmento de código le muestra cómo detectar si un mensaje es TNEF.
from aspose.email import MailMessage
mail = MailMessage.load(data_dir + "message.eml")
is_tnef = mail.original_is_tnef
Procesamiento de mensajes rebotados
Es muy común que un mensaje enviado a un destinatario rebote por cualquier razón, como una dirección de destinatario no válida. La API Aspose.Email tiene la capacidad de procesar dicho mensaje para verificar si es un correo rebotado o un mensaje de correo regular. El método check_bounced de MailMessage devuelve un resultado válido si el mensaje es un correo rebotado. Este artículo muestra el uso de BounceResult clase que brinda la capacidad de verificar si un mensaje es un correo rebotado. Además, proporciona información detallada sobre los destinatarios, la acción tomada y la razón de la notificación. El siguiente fragmento de código le muestra cómo procesar mensajes rebotados.
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()
Analizador de Spam Bayesiano
Aspose.Email ofrece filtrado de correo electrónico usando un analizador Bayesian de spam. Proporciona el SpamAnalyzer clase para este propósito. Este artículo muestra cómo entrenar el filtro para distinguir entre correo no deseado y correos regulares basándose en una base de datos de palabras.
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)