Утиліти - 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 повертає дійсний результат, якщо лист є повернутим. У цій статті показано використання BounceResult клас, який забезпечує можливість перевірки, чи є повідомлення повернутим (bounced) листом. Він також надає детальну інформацію про одержувачів, виконану дію та причину сповіщення. Нижче наведено фрагмент коду, який показує, як обробляти повернені повідомлення.
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)