Помощни функции - MailMessage
Имейл съобщения, съдържащи TNEF прикачени файлове
Transport Neutral Encapsulation Format (TNEF) е собственически формат за имейл прикачени файлове, използван от Microsoft Outlook и Microsoft Exchange Server. Aspose.Email API позволява да четете имейл съобщения с TNEF прикачени файлове и да променяте съдържанието им. Имейлът може след това да се запише като обикновен имейл или в същия формат, като се запазват TNEF прикачени файлове. Тази статия показва различни примерни кодове за работа със съобщения, съдържащи TNEF прикачени файлове. Тя също демонстрира създаването на TNEF EML файлове от Outlook MSG файлове.
Четене на съобщение с запазване на TNEF прикачени файлове
Следният кодов фрагмент показва как да прочетете съобщение, запазвайки 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)
Създаване на TNEF EML от MSG
Outlook MSG файловете понякога съдържат информация като таблици и текстови стилове, които могат да се нарушат при конвертиране в EML. Създаването на TNEF съобщения от такива MSG файлове позволява запазването на форматирането и дори изпращането им чрез имейл клиенти, запазвайки форматирането. Свойството convert_as_tnef се използва за постигане на това. Следният кодов фрагмент показва как да създадете TNEF eML от 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)
За създаване на TNEF, може да се използва следният примерен код.
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)
Откриване дали съобщението е TNEF
Следният кодов фрагмент показва как да откриете дали съобщението е TNEF.
from aspose.email import MailMessage
mail = MailMessage.load(data_dir + "message.eml")
is_tnef = mail.original_is_tnef
Обработка на отскочени съобщения
Много е често съобщение, изпратено до получател, да отскочи поради каквато и да е причина, като недействителен адрес. Aspose.Email API има възможност да обработва такова съобщение, за да провери дали е отскочил имейл или обикновено съобщение. Методът check_bounced на MailMessage връща валиден резултат, ако имейл съобщението е отскочил. Тази статия показва употребата на BounceResult клас, който осигурява възможност за проверка дали съобщението е отскочил имейл. Той също предоставя подробна информация за получателите, предприетото действие и причината за известието. Следният кодов фрагмент показва как да обработвате отскочени съобщения.
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()
Байесов анализатор за спам
Aspose.Email предоставя филтриране на имейли чрез баеевски спам анализатор. Той предоставя SpamAnalyzer клас за тази цел. Тази статия показва как да обучим филтъра да разграничава спам и обикновени имейли, базирайки се на база данни с думи.
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)