创建和设置电子邮件内容

创建新电子邮件消息

Aspose.Email for Java 使开发者能够从头创建 MIME(多用途互联网邮件扩展)消息。该 API 中用于此目的的主要类是 MailMessage 类。本主题解释了使用 Aspose.Email for Java 创建 EML、MSG 和 MTH 文件格式的电子邮件所需的步骤。

从头创建电子邮件消息:

  1. 创建 MailMessage 类的实例。
  2. 使用以下方式设置邮件主题 setSubject() 方法。
  3. 使用以下方式设置邮件正文 setHtmlBody() 方法。
  4. 使用以下方式设置电子邮件发件人 setFrom() 方法。
  5. 使用以下方式在 TO 字段中设置收件人 getTo().add() 方法。
  6. 使用以下方式在 CC 字段中设置收件人 getCC().add() 方法。
  7. 调用 Save() 方法,将消息文件保存到磁盘,支持 MSG、EML 和 MHT 格式。  

指定多个收件人

MailMessage 表示电子邮件消息。MailMessage 类的实例用于构建通过 SMTP 服务器发送的电子邮件。 SmtpClient 类。本主题演示如何指定多个电子邮件地址。可使用 MailMessage 类指定电子邮件地址。MailMessage 类使用的电子邮件地址有:

  • To - 收件人地址可以在 “To” 字段中指定。此字段的收件人是主要的邮件受众。可以有多个收件人地址。
  • Cc - CC(抄送)代表“副本”或“礼貌副本”,允许您添加需要查看邮件但不一定需要采取行动的收件人。例如经理或需要了解对话的团队成员。使用 Aspose.Email,您可以在代码中指定 CC 地址。这样,自动邮件或发送到特定地址的所有邮件都可以抄送给相关人员。
  • Bcc - Bcc(密件抄送),允许您向收件人发送邮件而对其他收件人隐藏。CC 在收件人可见的邮件信息中出现,而 Bcc 则不会。它用于隐藏通知。 

要在电子邮件中指定多个邮箱地址,请按以下步骤操作:

  1. 创建 MailMessage 类的实例。
  2. 使用 MailMessage 实例指定 From 以及多个 To、Cc 和 Bcc 地址。
  3. 创建 SmtpClient 类的实例,并使用 Send 方法发送电子邮件。

下面的代码示例展示了如何指定多个 To、CC 和 BCC 地址。

将电子邮件地址更改为友好名称

下面的编程示例演示如何在电子邮件中将电子邮件地址更改为友好名称。友好名称是比电子邮件地址更易读的名称,例如将 js346@domain.com 替换为 John Smith。发送邮件时,我们可以在 MailMessage 类构造函数。

要在电子邮件中将电子邮件地址更改为友好名称,请按以下步骤操作:

  • 创建 MailMessage 类的实例,并在 ToFrom 字段中指定带友好名称的电子邮件地址。
  • 通过在 MailMessage 实例中调用 MailMessage 类构造函数,指定带友好名称的 Cc 和 Bcc 电子邮件地址。
  • 创建 SmtpClient 类的实例,并使用 Send 方法发送电子邮件。

以下代码片段展示了如何为电子邮件地址显示名称。

设置邮件正文

MailMessage 类,表示电子邮件消息。MailMessage 类的实例用于构建通过 SMTP 服务器发送的电子邮件。 SmtpClient 类。邮件正文可以使用 MailMessage 类指定。电子邮件正文可以使用 setHtmlBody MailMessage 中的方法。

除了 HtmlBody,Aspose.Email 还有另一个与邮件正文相关的方法:

  • isBodyHtml:告诉用户正文是 HTML 还是纯文本。

本主题展示了如何定义 HTML 正文文本并设置备用文本。

设置 HTML 正文

HtmlBody 用于指定邮件正文的 HTML 内容。HtmlBody 必须包裹在 标签之间。以下代码片段展示了如何设置 HTML 正文。

设置备用文本

使用 AlternateView 类,用于指定电子邮件在不同格式的副本。例如,如果您发送 HTML 消息,可能还想提供纯文本版本,以防收件人使用的阅读器不支持 HTML 内容。此类有两个属性, LinkedResourcesBaseUri,用于解析电子邮件内容中的 URL。

  • LinkedResources 是 LinkedResources 对象的集合。在渲染时,电子邮件内容中的 URL 首先与 LinkedResources 集合中每个对象的 Content Link 中的 URL 匹配并解析。
  • BaseUri 被邮件阅读器用于解析正文中的相对 URL,以及在 LinkedResources 集合中解析相对内容链接 URL。

以下代码片段展示了如何设置备用文本。

指定邮件正文编码

内容类型定义了电子邮件的内容格式:字符集。例如,java.nio.Charset 提供的一些常用字符集有:

  • US-ASCII - 7 位 ASCII,又称 ISO646-US,Unicode 字符集的基本拉丁块
  • ISO-8859-1 - ISO 拉丁字母表第 1 号,又称 ISO-LATIN-1
  • UTF-8 - 8 位 UCS 转换格式
  • UTF-16BE - 16 位 UCS 转换格式,大端字节顺序
  • UTF-16LE - 16 位 UCS 转换格式,小端字节顺序
  • UTF-16 - 16 位 UCS 转换格式,字节顺序由可选的字节顺序标记(BOM)确定

Aspose.Email 使用 BodyEncoding MailMessage 类的属性,用于指定邮件正文的编码。要对邮件正文进行编码,请按照以下步骤操作:

  1. 创建 MailMessage 类的实例。
  2. 在 MailMessage 实例中指定发件人、收件人和 HTML 正文。
  3. 指定 BodyEncoding 属性值。
  4. 创建该类的实例 SmtpClient 类,并使用 Send 方法发送电子邮件。

MailMessage 功能

MailMessage 类,表示电子邮件的内容。MailMessage 类的实例用于构建通过 SMTP 服务器发送的电子邮件。 SmtpClient 类。本文展示了如何使用 MailMessage 类的实用功能来控制以下邮件特性:

  • 日期和时间 - 通过 MailMessage 类 setDate 用于设置邮件日期和时间的方法。
  • 消息优先级 - MailPriority 类指定发送电子邮件的优先级别,可为低、普通或高。优先级影响传输速度和投递。
  • 消息敏感性 - MailSensitivity 类指定了五个敏感性级别。
  • 投递通知 - 投递通知让发送者知道他们发送的邮件已送达收件人的收件箱。

默认情况下,日期是邮件实际发送的日期,时间是发送时间,正如 Microsoft Outlook 所显示的。但实际的邮件投递时间由 SMTP 服务器在邮件头中添加。例如,下面是常见的邮件头,其中 Date 字段是使用 MailMessage.setDate 设置的。

下面的代码片段演示了如何使用上述每个功能。

请求阅读回执

下面的编程示例展示了如何请求回执。MailMessage 类 DeliveryNotificationOptions 枚举属性描述了 投递通知选项 用于电子邮件。要在发送电子邮件后请求回执,请按照以下步骤操作:

  1. 创建 MailMessage 类的实例。
  2. 在 MailMessage 实例中指定邮件的发件人、收件人和 HTML 正文。
  3. 在其他 MailMessage 实例中指定 DeliveryNotificationOptions。
  4. 创建 SmtpClient 类的实例,并使用 Send 方法发送电子邮件。

读取回执请求可能并不总是被满足,原因如下:

  • 邮件客户端可能未实现此功能。
  • 最终用户可能已关闭此功能。
  • 最终用户可能选择不发送回执。

以下代码片段展示了如何请求阅读回执。

设置电子邮件标题

电子邮件标题代表互联网标准,RFC 定义了包含在互联网电子邮件中的标题字段。电子邮件标题可以使用以下方式指定: MailMessage 类。常见的标题类型在此定义: HeaderType 类。它是一个密封类,行为类似普通枚举。

通常,电子邮件标题包含以下字段:

  • To:收件人地址可以在 To 字段中指定。To 字段的收件人是消息的主要受众。可以有多个收件人地址。
  • From:此字段显示消息发送者的电子邮件地址。
  • Cc:允许用户发送“抄送”或“礼貌抄送”。即收件人不需要回复或采取行动。通常用于通知监督人员。
  • Bcc:盲密送,指将消息发送给多个收件人,但收件人收到的内容中不包含完整的收件人列表,用于隐藏通知。
  • ReplyTo:此标题字段用于指示发件人希望回复发送到何处。
  • Subject:标题、主题。常用于作为回复或评论其他消息的线程指示。
  • Date:此标题指定日期(和时间)。通常是消息撰写并发送的日期。
  • XMailer:关于发件人客户端软件的信息。例如:X-Mailer: Aspose.Email。XMailer 被邮件客户端使用。不同的邮件客户端会有不同的 XMailer 值。MS Outlook 的 XMailer 值是 Microsoft Office Outlook, Build 11.0.5510。邮件接收者或阅读器会忽略它。

通常,电子邮件标题看起来类似于以下内容:


 Reply-To: reply@reply.com

From: sender@sender.com

To: guangzhou@guangzhoo.com

Subject: test mail

Date: 6 Mar 2006 8:2:2 +0800

X-Mailer: Aspose.Email

要自定义电子邮件标题,请按照以下步骤操作:

  • 创建该类的实例 MailMessage 类。
  • 使用 MailMessage 类的实例指定 To、From、CC、Bcc、ReplyTo、Subject、Date 与 XMailer。
  • 创建该类的实例 MimeHeader 类并指定秘密标题。
  • 将秘密标题添加到 MailMessage 实例中。

在下面给出的代码中,我们自定义了电子邮件标题。

上述代码片段生成的电子邮件标题格式如下。可以通过在 Microsoft Outlook 中打开文件 MsgHeaders.msg 并查看其属性来观察。


 Reply-To: reply@reply.com

From: sender@sender.com

To: receiver1@receiver.com

CC: receiver2@receiver.com

BCC: receiver3@receiver.com

Subject: test mail

Date: 6 Mar 2006 8:2:2 +0800

X-Mailer: Aspose.Email

secret-header: mystery

在特定位置插入标题

添加 HeadersCollection 的方法将在集合末尾插入标题。然而,有时需要在特定位置插入标题。在这种情况下,Add 方法无济于事。要实现此目的,请使用 Insert HeadersCollection 的方法。如果集合中包含同名标题,则此标题将插入到其他同名标题之前。以下是 Insert 方法的签名及使用示例代码。


 Method Signature

HeaderCollection.insert(String name, String value)

向电子邮件添加自定义标题

下面的编程示例演示了如何在电子邮件中指定自定义标题。可以使用 MailMessage 类指定电子邮件标题。要在电子邮件中指定自定义标题,请按照以下步骤操作:

  1. 创建 MailMessage 类的实例。
  2. 使用 MailMessage 实例指定 to、from 和 subject 的值。
  3. 将秘密标题添加到 MailMessage 实例中。
  4. 创建 SmtpClient 类的实例,并使用 Send 方法发送电子邮件。

以下代码片段展示了如何向电子邮件添加自定义标题。

使用 DKIM 对电子邮件签名

Aspose.Email 允许使用 DKIM(DomainKeys Identified Mail)对电子邮件进行签名。这使组织能够对正在传输的邮件承担责任(关于 DKIM)。DKIM 为电子邮件标题添加数字签名,可供收件人验证。发送者的公钥使接收者能够验证签名与邮件内容匹配。MailMessage 类 dKIMSign 该方法用于设置加密和签名信息以对消息进行签名。以下代码片段展示了如何使用 DKIM 对电子邮件进行签名。

执行邮件合并

邮件合并帮助您创建并发送一批相似的电子邮件。邮件的核心内容相同,但可以对内容进行个性化。通常使用收件人的联系信息(名、姓、公司等)来个性化邮件。

|todo:image_alt_text| | :- | |图示:邮件合并工作原理|

要使用 Aspose.Email 执行邮件合并,请执行以下步骤:

  1. 创建一个名为 signature 的函数
  2. 创建该类的实例 MailMessage 类。
  3. 指定发送者、接收者、主题和正文。
  4. 为电子邮件末尾创建签名。
  5. 创建该类的实例 TemplateRoutine 类中获取签名并传递给 MailMessage 实例。
  6. TemplateRoutine 实例。
  7. 创建该类的实例 DataTable 类。
  8. 在 DataTable 类中添加列 Receipt、FirstName 和 LastName 作为数据源
  9. 创建该类的实例 DataRow
  10. 在 DataRow 对象中指定收据地址、名和姓
  11. 创建该类的实例 MailMessageCollection
  12. 指定 TemplateRoutine 以及 DataTable 实例在 MailMessageCollection 实例。
  13. 创建该类的实例 SmtpClient 类并指定服务器、端口、用户名和密码
  14. 使用以下方式发送电子邮件: SmtpClient 类 BulkSendAsync 方法

下面的代码从三个人向一个人发送电子邮件。