Вспомогательные функции — MailMessage
MailMessage с вложениями TNEF
Transport Neutral Encapsulation Format (TNEF) — это проприетарный формат вложений электронной почты, используемый Microsoft Outlook и Microsoft Exchange Server. API Aspose.Email позволяет читать сообщения электронной почты с вложениями 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
Обработка недоставленных сообщений
Очень часто сообщение, отправленное получателю, может отскочить по любой причине, например из‑за неверного адреса. API Aspose.Email позволяет обрабатывать такие сообщения, проверяя, являются ли они недоставленными или обычными письмами. Метод check_bounced класса MailMessage возвращает положительный результат, если сообщение является bounce‑письмом. Эта статья демонстрирует использование BounceResult Класс, который позволяет проверять, является ли сообщение недоставленным (bounce). Он также предоставляет подробную информацию о получателях, выполненном действии и причине уведомления. Ниже показан фрагмент кода, демонстрирующий обработку недоставленных сообщений.
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)