Užitečné funkce – MailMessage

E‑mailové zprávy obsahující TNEF přílohy

Transport Neutral Encapsulation Format (TNEF) je proprietární formát e‑mailových příloh používaný Microsoft Outlook a Microsoft Exchange Server. API Aspose.Email umožňuje číst e‑mailové zprávy, které mají TNEF přílohy, a upravovat obsah přílohy. E‑mail pak může být uložen jako běžný e‑mail nebo ve stejném formátu, přičemž jsou zachovány TNEF přílohy. Tento článek uvádí různé ukázkové kódy pro práci se zprávami obsahujícími TNEF přílohy. Článek také ukazuje, jak vytvářet TNEF EML soubory z Outlook MSG souborů.

Čtení zprávy při zachování TNEF příloh

Následující úryvek kódu ukazuje, jak číst zprávu při zachování TNEF příloh.

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)

Vytvoření TNEF EML ze souboru MSG

Outlook MSG soubory někdy obsahují informace jako tabulky a styly textu, které se mohou při převodu na EML narušit. Vytváření TNEF zpráv z takových MSG souborů umožňuje zachovat formátování a dokonce takové zprávy odeslat prostřednictvím e‑mailových klientů s zachovaným formátováním. K dosažení tohoto účelu se používá vlastnost convert_as_tnef. Následující úryvek kódu ukazuje, jak vytvořit TNEF eML z 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)

Pro vytvoření TNEF lze použít následující ukázkový kód.

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)

Detekce, zda je zpráva TNEF

Následující úryvek kódu ukazuje, jak detekovat, zda je zpráva ve formátu TNEF.

from aspose.email import MailMessage

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

Zpracování odražených zpráv

Je velmi časté, že zpráva odeslaná příjemci může odrazit z jakéhokoli důvodu, například neplatné adresy příjemce. API Aspose.Email má možnost takovou zprávu zpracovat a zjistit, zda jde o odražený e‑mail nebo běžnou e‑mailovou zprávu. Metoda check_bounced třídy MailMessage vrací platný výsledek, pokud je e‑mailová zpráva odražená. Tento článek ukazuje použití BounceResult třída, která poskytuje možnost zkontrolovat, zda je zpráva odražený e‑mail. Dále poskytuje podrobné informace o příjemcích, provedené akci a důvodu upozornění. Následující úryvek kódu ukazuje, jak zpracovat odražené zprávy.

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

Bayesův spamový analyzátor

Aspose.Email poskytuje filtrování e‑mailů pomocí bayesovské analýzy spamu. Poskytuje SpamAnalyzer třída pro tento účel. Tento článek ukazuje, jak natrénovat filtr k rozlišení spamu a běžných e‑mailů na základě databáze slov.

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)