实用功能 - MailMessage
包含 TNEF 附件的 MailMessage
传输中立封装格式(TNEF)是 Microsoft Outlook 和 Microsoft Exchange Server 使用的专有电子邮件附件格式。Aspose.Email API 允许读取包含 TNEF 附件的电子邮件并修改附件内容。随后可将邮件保存为普通邮件或相同格式,保留 TNEF 附件。本文提供了处理包含 TNEF 附件的邮件的不同代码示例,还展示了如何将 Outlook MSG 文件创建为 TNEF EML 文件。
在保留 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)
从 MSG 创建 TNEF EML
Outlook MSG 有时包含表格和文本样式等信息,如果直接转换为 EML 可能会被破坏。将此类 MSG 文件转换为 TNEF 消息可以保留格式,并且可以通过电子邮件客户端发送时保持格式。使用 convert_as_tnef 属性来实现此功能。以下代码片段展示了如何从 MSG 创建 TNEF eML。
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 具有处理此类邮件的能力,可检查它是退回邮件还是普通邮件。MailMessage 的 check_bounced 方法如果邮件是退回邮件则返回有效结果。本文展示了该方法的用法。 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)