Dienstprogrammfunktionen – MailMessage

MailMessages mit TNEF‑Anhängen

Transport Neutral Encapsulation Format (TNEF) ist ein proprietäres E‑Mail‑Anhangsformat, das von Microsoft Outlook und Microsoft Exchange Server verwendet wird. Die Aspose.Email‑API ermöglicht das Lesen von E‑Mail‑Nachrichten mit TNEF‑Anhängen und das Ändern des Inhalts des Anhangs. Die E‑Mail kann anschließend als normale E‑Mail oder im selben Format gespeichert werden, wobei TNEF‑Anhänge erhalten bleiben. Dieser Artikel zeigt verschiedene Codebeispiele für die Arbeit mit Nachrichten, die TNEF‑Anhänge enthalten. Außerdem wird gezeigt, wie TNEF‑EML‑Dateien aus Outlook‑MSG‑Dateien erstellt werden.

Nachrichten lesen und TNEF‑Anhänge beibehalten

Der folgende Codeausschnitt zeigt, wie man Nachrichten liest und dabei TNEF‑Anhänge beibehält.

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 aus MSG erstellen

Outlook‑MSGs enthalten manchmal Informationen wie Tabellen und Textstile, die bei einer Konvertierung zu EML gestört werden können. Das Erstellen von TNEF‑Nachrichten aus solchen MSG‑Dateien ermöglicht es, die Formatierung beizubehalten und solche Nachrichten sogar über E‑Mail‑Clients zu senden, wobei die Formatierung erhalten bleibt. Die Eigenschaft convert_as_tnef wird dafür verwendet. Der folgende Codeausschnitt zeigt, wie man aus einer MSG‑Datei TNEF‑EML erstellt.

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)

Zum Erstellen von TNEF kann der folgende Beispielcode verwendet werden.

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)

Erkennen, ob eine Nachricht TNEF ist

Der folgende Codeausschnitt zeigt, wie man erkennt, ob eine Nachricht TNEF ist.

from aspose.email import MailMessage

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

Verarbeitung unzustellbarer Nachrichten

Es kommt häufig vor, dass eine an einen Empfänger gesendete Nachricht aus irgendeinem Grund, z. B. wegen einer ungültigen Empfängeradresse, zurückgeworfen wird. Die Aspose.Email‑API kann solche Nachrichten verarbeiten, um zu prüfen, ob es sich um eine unzustellbare oder eine reguläre E‑Mail handelt. Die Methode check_bounced der MailMessage gibt ein gültiges Ergebnis zurück, wenn die Nachricht eine unzustellbare E‑Mail ist. Dieser Artikel zeigt die Verwendung von BounceResult Klasse, die die Möglichkeit bietet, zu prüfen, ob eine Nachricht eine unzustellbare E‑Mail ist. Sie liefert zudem detaillierte Informationen über die Empfänger, die durchgeführte Aktion und den Grund der Benachrichtigung. Der folgende Codeausschnitt zeigt, wie unzustellbare Nachrichten verarbeitet werden.

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

Bayesianischer Spam‑Analyzer

Aspose.Email bietet E‑Mail‑Filterung mit einem Bayesschen Spam‑Analyser. Es stellt die SpamAnalyzer Klasse für diesen Zweck. Dieser Artikel zeigt, wie man den Filter darauf trainiert, Spam von regulären E‑Mails anhand einer Wortdatenbank zu unterscheiden.

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)