Funkcje pomocnicze - MailMessage

Wiadomości e‑mail zawierające załączniki TNEF

Transport Neutral Encapsulation Format (TNEF) jest własnościowym formatem załączników e‑mail używanym przez Microsoft Outlook i Microsoft Exchange Server. API Aspose.Email umożliwia odczyt wiadomości e‑mail zawierających załączniki TNEF oraz modyfikację ich zawartości. E‑mail może następnie zostać zapisany jako zwykła wiadomość lub w tym samym formacie, zachowując załączniki TNEF. Ten artykuł prezentuje różne przykłady kodu do pracy z wiadomościami zawierającymi załączniki TNEF. Artykuł również pokazuje, jak tworzyć pliki TNEF EML z plików Outlook MSG.

Odczyt wiadomości przy zachowaniu załączników TNEF

Poniższy fragment kodu pokazuje, jak odczytać wiadomość zachowując załączniki 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)

Tworzenie TNEF EML z MSG

Pliki Outlook MSG czasami zawierają informacje, takie jak tabele i style tekstu, które mogą zostać zaburzone podczas konwersji do EML. Tworzenie wiadomości TNEF z takich plików MSG pozwala zachować formatowanie i nawet wysłać takie wiadomości za pośrednictwem klientów e‑mail, zachowując formatowanie. Właściwość convert_as_tnef służy do tego celu. Poniższy fragment kodu pokazuje, jak utworzyć eML w formacie TNEF z pliku 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)

Do tworzenia TNEF można użyć poniższego przykładowego kodu.

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)

Wykrywanie, czy wiadomość jest TNEF

Poniższy fragment kodu pokazuje, jak wykryć, czy wiadomość jest w formacie TNEF.

from aspose.email import MailMessage

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

Przetwarzanie odrzuconych wiadomości

Bardzo często wiadomość wysłana do odbiorcy może zostać odrzucona z dowolnego powodu, np. nieprawidłowy adres odbiorcy. API Aspose.Email umożliwia przetworzenie takiej wiadomości w celu sprawdzenia, czy jest to odrzucona wiadomość e‑mail, czy zwykła. Metoda check_bounced klasy MailMessage zwraca prawidłowy wynik, jeśli wiadomość e‑mail została odrzucona. Ten artykuł pokazuje użycie BounceResult klasa, która umożliwia sprawdzenie, czy wiadomość jest odrzuconą (bounced) wiadomością e‑mail. Dostarcza również szczegółowe informacje o odbiorcach, podjętej akcji oraz przyczynie powiadomienia. Poniższy fragment kodu pokazuje, jak przetwarzać wiadomości odrzucone.

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

Analizator Spamu Bayesa

Aspose.Email zapewnia filtrowanie e‑maili przy użyciu bayesowskiego analizatora spamu. Dostarcza on SpamAnalyzer klasa do tego celu. Ten artykuł pokazuje, jak wytrenować filtr, aby odróżniał spam od zwykłych e‑maili na podstawie bazy słów.

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)