用于发送 SMTP 邮件的任务。
此任务可以使用纯文本、UU 编码或 MIME 格式邮件发送邮件,具体取决于可用性。
SMTP 身份验证和 SSL/TLS 需要 JavaMail 或 JakartaMail,并且仅在 MIME 格式下可用。
附件可以使用嵌套的 <attachments> 元素发送,这些元素是 路径状结构。这意味着任何基于文件系统的 资源 或资源集合都可以用来指向附件。在 Apache Ant 1.7 之前,只有 <fileset> 被支持作为嵌套元素,你仍然可以直接使用它,而无需 <attachments> 容器。
注意:此任务可能依赖于 Ant 分发版中未包含的外部库。有关更多信息,请参阅 库依赖项。
从 Ant 1.10.13 开始,Ant 支持现代的 jakarta.mail 以及旧的 javax.mail 实现,如果两者都可用,它将优先使用 jakarta.mail。
| 属性 | 描述 | 必需 |
|---|---|---|
| from | 发件人的电子邮件地址。 | <from> 元素或 from 属性。 |
| replyto | 回复地址。 | 否 |
| tolist | 收件人列表,用逗号分隔。 | 至少需要其中一个,或等效的嵌套元素 |
| cclist | 抄送收件人列表,用逗号分隔 | |
| bcclist | 密件抄送收件人列表,用逗号分隔 | |
| message | 要发送的邮件正文。 | 需要其中一个,或 <message> 元素。 |
| messagefile | 作为邮件正文发送的文件。文件中的属性值将被扩展。 | |
| messagefileinputencoding | 指定输入文件的编码。有关可能值的列表,请参阅 支持的编码。从 Ant 1.9.4 开始 | 否;默认为默认的 JVM 字符编码 |
| messagemimetype | 邮件的 MIME 类型。 | 否;默认为 text/plain |
| files | 作为邮件附件发送的文件。用逗号或空格分隔多个文件名。你也可以使用 <fileset> 元素来指定文件。 |
否 |
| failonerror | 标志,指示是否在任何错误发生时停止构建。 | 否;默认为 true |
| includefilenames | 在文件内容之前包含文件名。 | 否;默认为 false,除非使用 plain编码,否则会被忽略 |
| mailhost | SMTP 服务器的主机名。 | 否;默认为 localhost |
| mailport | SMTP 服务器的 TCP 端口。 | 否;默认为 25 |
| user | SMTP 身份验证的用户名 | 是,如果你的 SMTP 服务器需要 SMTP 身份验证; 邮件将使用 MIME 发送,并且需要 JavaMail |
| password | SMTP 身份验证的密码 | 是,如果你的 SMTP 服务器需要 SMTP 身份验证; 邮件将使用 MIME 发送,并且需要 JavaMail |
| ssl | true、 on或 yes在这里被接受 指示你是否需要 TLS/SSL |
否 |
| encoding | 指定用于邮件内容的编码。值可以是 mime、 uu、 plain或 auto。 uu或 plain与 SMTP 身份验证不兼容 |
否;默认为 auto |
| charset | 邮件的字符集。 你也可以在 message 嵌套元素中设置 charset。这些选项是互斥的。 |
否 |
| subject | 邮件主题行。 | 否 |
| ignoreInvalidRecipients | (布尔值) 任务是否应该尝试将邮件发送给尽可能多的收件人,并且只在没有收件人可达时才失败。从 Ant 1.8.0 开始。 | 否;默认为 false |
| enableStartTLS | (布尔值) 是否应该支持用于切换到加密连接以进行身份验证的 STARTTLS 命令。需要 JavaMail。从 Ant 1.8.0 开始 |
否 |
从 Ant 1.6 开始,属性 from、replyto、tolist、cclist、bcclist 可以包含以下形式的电子邮件地址
你需要将尖括号输入为 XML 实体 >
和 <
。
添加一个电子邮件地址元素。它接受以下属性
| 属性 | 描述 | 必需 |
|---|---|---|
| name | 地址的显示名称。 | 否 |
| address | 电子邮件地址。 | 是 |
指定要包含在邮件正文中的邮件。它接受以下属性
| 属性 | 描述 | 必需 |
|---|---|---|
| src | 用作邮件的文件。 | 否 |
| mimetype | 用于邮件的 MIME 类型。 | 否 |
| charset | 邮件的字符集 你也可以将 charset 设置为封闭的 mail 任务的属性。这些选项是互斥的。 |
否 |
| inputencoding | 指定输入文件的编码。有关可能值的列表,请参阅 支持的编码。从 Ant 1.9.4 开始 | 否;默认为默认的 JVM 字符编码 |
如果未指定 src 属性,则可以在 <message> 元素内添加文本。属性扩展将在邮件中发生,无论它是作为外部文件指定还是作为 <message> 元素内的文本指定。
从 Ant 1.7 开始,可以通过在一个或多个嵌套的 header 元素上指定这些属性来添加任意邮件头
| 属性 | 描述 | 必需 |
|---|---|---|
| name | 与该邮件头关联的名称。 | 是 |
| value | 要分配给该邮件头的值。 | 是 |
允许在多个头之间重复 name 属性。
从 me
发送一封邮件到 you
,主题为 夜间构建结果
,并将文件 build.log 的内容包含在邮件正文中。
<mail from="me"
tolist="you"
subject="Results of nightly build"
files="build.log"/>
从 config@myisp.com
发送一封邮件到 all@xyz.com
,主题为 测试构建
。对这封邮件的回复将发送到 me@myisp.com
。来自 dist 目录的任何 zip 文件都将被附加。该任务将尝试使用 JavaMail,并根据可用支持类,依次回退到 UU 编码或无编码。 ${buildname} 将被替换为 buildname 属性的值。
<mail mailhost="smtp.myisp.com" mailport="1025" subject="Test build">
<from address="config@myisp.com"/>
<replyto address="me@myisp.com"/>
<to address="all@xyz.com"/>
<message>The ${buildname} nightly build has completed</message>
<attachments>
<fileset dir="dist">
<include name="**/*.zip"/>
</fileset>
</attachments>
</mail>
从 me@myisp.com
发送一封邮件到 all@xyz.com
,主题为 测试构建
,邮件正文使用 UTF-8 编码。
<property name="line2" value="some_international_message"/>
<echo message="${line2}"/>
<mail mailhost="somehost@xyz.com" mailport="25" subject="Test build" charset="utf-8">
<from address="me@myist.com"/>
<to address="all@xyz.com"/>
<message>some international text:${line2}</message>
</mail>