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)