实用功能 - MailMessage
加密和解密消息
Aspose.Email 提供加密和解密电子邮件的功能。本章节展示了如何加载已有或新建的消息并使用以下方式进行加密: MailMessage。该 encrypt() 和 decrypt() 这些方法返回 MailMessage 对象,以实现相应的效果,在加密/解密消息时需要注意。加密和解密消息涉及以下步骤:
- 创建新消息或加载已有消息
- 使用证书文件加密消息
- 发送消息或保存它
- 根据需要解密消息
以下代码片段展示了如何加密和解密消息。
检查消息是否加密
Aspose.Email MailMessage 该类允许检查消息是否已加密。 isEncrypted MailMessage 的属性允许如下面代码示例所示进行检查。
使用 X509Certificate 进行消息加密
Aspose.Email 提供用于使用 X509Certificate 处理加密消息的 API:
MailMessage 该类具有以下用于处理消息加密的方法:
- public MailMessage attachSignature(X509Certificate2 certificate, boolean detached) - 创建已签名的消息。
- public MailMessage attachSignature(X509Certificate2 certificate) - 创建已签名的消息。
- public X509Certificate2[] checkSignatureCert() - 检查现有 MailMessage 的签名。
- public MailMessage decrypt(X509Certificate2 certificate)
- public MailMessage encrypt(X509Certificate2 certificate)
- public MailMessage encrypt(X509Certificate2[] certificates)
为 Aspose.Email 配置区域设置选项
您可以使用 LocaleOptions 当默认区域设置未知时,该类用于为 Aspose Email 库设置最合适的区域设置。它提供以下方法来完成此任务:
- getLocale() - 返回 Aspose.Email 的默认 Locale。
- setLocale(Locale locale) 和 setLocale(String localeName) - 为 Aspose.Email 设置默认区域设置。
- clear() - 清除 Aspose.Email 的默认区域设置。将使用 Java 的默认区域设置。
以下代码示例演示了如何使用指定的区域设置从文件加载邮件消息:
final Locale locale = new Locale("en", "DE");
Locale.setDefault(locale);
// set Locale for Aspose Email lib
LocaleOptions.setLocale("en-US");
// or
//LocaleOptions.setLocale(new Locale("en", "US"));
MailMessage.load("document.msg");
此代码确保应用程序和 Aspose.Email 库使用指定的区域设置来处理语言、国家和文化惯例。
包含 TNEF 附件的 MailMessage
传输中立封装格式(TNEF)是一种专有的电子邮件附件格式,微软 Outlook 和 Microsoft Exchange Server 使用该格式。Aspose.Email API 允许您读取包含 TNEF 附件的电子邮件并修改其内容。随后,电子邮件可以保存为普通邮件或相同格式,保留 TNEF 附件。本文展示了处理包含 TNEF 附件的消息的不同代码示例。
通过保留 TNEF 附件读取消息
以下代码片段展示了如何在保留 TNEF 附件的情况下读取消息。
在 TNEF 附件中更新资源并保留 TNEF 格式
以下代码片段展示了如何在 TNEF 附件中更新资源并保留 TNEF 格式。
向包含 TNEF 的主消息添加新附件
从 MSG 创建 TNEF EML
Outlook MSG 有时包含表格和文本样式等信息,如果将其转换为 EML,这些信息可能会被破坏。通过这些 MSG 文件创建 TNEF 消息可保留格式,甚至可通过电子邮件客户端发送时保持格式。
要创建 TNEF,可使用以下示例代码。
检测消息是否为 TNEF
处理退回邮件
发送给收件人的邮件因无效收件人地址等各种原因而被退回是很常见的。Aspose.Email API 具备处理此类邮件以检查它是退回邮件还是普通邮件的能力。 检查退回 方法的 MailMessage 如果电子邮件是退回邮件,该类将返回有效结果。
本文展示了以下的用法 BounceResult 该类提供检查消息是否为退回邮件的功能,并进一步提供关于收件人、采取的操作以及通知原因的详细信息。
忽略异常
该库提供了一个 ExceptionManager 用于在您的应用程序功能中实现忽略异常能力的类。下面的代码片段演示了如何设置回调来处理异常:
ExceptionManager.setIgnoreExceptionsHandler( new IgnoreExceptionsCallback() {
//exception path: {Module}\{Method}\{Action}\{GUID}
//example: MailMessage\Load\DecodeTnefAttachment\64149867-679e-4645-9af0-d46566cae598
public boolean invoke(AsposeException ex, String path) {
//Ignore all exceptions on MailMessage.Load
return path.equals("MailMessage\\Load");
}
});
或使用替代方案:
ExceptionManager.setIgnoreAll(true);
此外,您可以为被忽略的异常日志设置回调函数:
ExceptionManager.setIgnoreExceptionsLogHandler( new IgnoreExceptionsLogCallback() {
public void invoke(String message) {
System.out.println("=== EXCEPTION IGNORED === " + message);
}
});
系统会通过错误消息通知用户该异常可以被忽略。例如:
消息中的异常:
AsposeArgumentException: properties should not be empty.
如果您想忽略异常并继续执行,则可以使用:
ExceptionManager.getIgnoreList().add("MailMessage\\Load\\DecodeTnefAttachment\\64149867-679e-4645-9af0-d46566cae598")
Invalid TNEF Attachment will be interpreted as regular attachment.
贝叶斯垃圾邮件分析器
Aspose.Email 提供使用贝叶斯垃圾邮件分析器进行电子邮件过滤的功能。它提供了 SpamAnalyzer 用于此目的的类。本文展示了如何训练过滤器,根据词库区分垃圾邮件和普通邮件。
从 EML 消息获取前置和尾部
在 MIME 格式中,前置是出现在标题之后、第一次 multipart 边界之前的文本。尾部是出现在最后一个边界之后、消息结束之前的文本。此文本通常在邮件阅读器中不可见,但某些 MIME 实现可能会使用它向使用非 MIME 程序读取消息的收件人插入备注。
以下代码片段展示了如何从 EML 消息中获取前置和尾部文字,可通过相应的类方法实现 MailMessage 类:
- setPreamble(String value) - 获取或设置前置文字。
- setEpilogue(String value) - 获取或设置尾部文字。
// Gets or sets a preamble text.
public String getPreamble, setPreamble
// Gets or sets an epilogue text.
public String getEpilogue, setEpilogue