Hulpmiddelen - MailMessage

MailMessages met TNEF‑bijlagen

Transport Neutral Encapsulation Format (TNEF) is een propriëtair e‑mailbijlage‑formaat dat door Microsoft Outlook en Microsoft Exchange Server wordt gebruikt. De Aspose.Email‑API stelt je in staat e‑mailberichten met TNEF‑bijlagen te lezen en de inhoud van de bijlage te wijzigen. De e‑mail kan vervolgens worden opgeslagen als normale e‑mail of in hetzelfde formaat, met behoud van TNEF‑bijlagen. Dit artikel toont verschillende code‑voorbeelden voor het werken met berichten die TNEF‑bijlagen bevatten. Het artikel laat ook zien hoe je TNEF‑EML‑bestanden maakt vanuit Outlook‑MSG‑bestanden.

Bericht lezen met behoud van TNEF‑bijlagen

Het volgende codefragment toont hoe je een bericht kunt lezen waarbij TNEF‑bijlagen behouden blijven.

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)

TNEF‑EML maken vanuit MSG

Outlook‑MSG’s bevatten soms informatie zoals tabellen en tekststijlen die verstoord kunnen raken bij conversie naar EML. Het creëren van TNEF‑berichten uit dergelijke MSG‑bestanden zorgt ervoor dat de opmaak behouden blijft en zelfs via e‑mailclients kan worden verzonden met behoud van de opmaak. De eigenschap convert_as_tnef wordt gebruikt om dit te bereiken. Het volgende codefragment toont hoe je TNEF‑EML uit een MSG kunt maken.

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)

Voor het maken van TNEF kan de volgende voorbeeldcode worden gebruikt.

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)

Detecteer of een bericht TNEF is

Het volgende codefragment toont hoe je kunt detecteren of een bericht TNEF is.

from aspose.email import MailMessage

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

Verwerken van teruggestuurde berichten

Het komt vaak voor dat een bericht dat naar een geadresseerde is gestuurd, om verschillende redenen (bijv. een ongeldig e‑mailadres) teruggekaatst wordt. De Aspose.Email‑API kan zo’n bericht verwerken om te controleren of het een teruggestuurde e‑mail of een regulier bericht is. De check_bounced‑methode van MailMessage geeft een geldig resultaat terug als het bericht een teruggestuurde e‑mail is. Dit artikel toont het gebruik van BounceResult klasse die de mogelijkheid biedt om te controleren of een bericht een teruggestuurde e‑mail is. Daarnaast geeft het gedetailleerde informatie over de ontvangers, de ondernomen actie en de reden van de notificatie. Het volgende codefragment toont hoe je teruggestuurde berichten kunt verwerken.

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

Bayesiaanse Spam Analyzer

Aspose.Email biedt e‑mailfiltering met een Bayesiaanse spam‑analyzer. Het biedt de SpamAnalyzer klasse voor dit doel. Dit artikel laat zien hoe je de filter traint om spam van reguliere e‑mails te onderscheiden op basis van een woorden‑database.

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)