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)