Oracle UTL_MAIL - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Oracle UTL_MAIL

Amazon RDS 通过使用 UTL_MAIL 选项和 SMTP 服务器支持 Oracle UTL_MAIL。您可以通过使用 UTL_MAIL 包直接从您的数据库发送电子邮件。Amazon RDS 支持适用于以下版本 Oracle 的 UTL_MAIL:

  • Oracle Database 21c (21.0.0.0),所有版本

  • Oracle Database 19c (19.0.0.0),所有版本

  • Oracle Database 12c 第 2 版 (12.2),所有版本

  • Oracle Database 12c 第 1 版 (12.1),版本 12.1.0.2.v5 及更高版本

以下是使用 UTL_MAIL 的一些限制:

  • UTL_MAIL 不支持传输层安全性 (TLS),因此,不会对电子邮件进行加密。

    要通过创建和上传自定义 Oracle wallet 来安全地连接到远程 SSL/TLS 资源,请按照 使用证书和 Oracle Wallet 配置 UTL_HTTP 访问 中的说明操作。

    Wallet 所需的具体证书因服务而异。对于 Amazon 服务,通常可在 Amazon Trust Services 存储库中了解到相关信息。

  • UTL_MAIL 不支持对 SMTP 服务器进行身份验证。

  • 您在一封电子邮件中只能发送一个附件。

  • 您无法发送 32 K 以上的附件。

  • 您只能使用 ASCII 和广义二进制编码的十进制交换码 (EBCDIC) 字符编码。

  • SMTP 端口 (25) 根据弹性网络接口所有者的策略进行限制。

当您启用 UTL_MAIL 时,仅向数据库实例的主用户授予执行权限。如果需要,主用户可向其他用户授予执行权限,以便他们能够使用 UTL_MAIL。

重要

建议您启用 Oracle 的内置审核功能以跟踪 UTL_MAIL 过程的使用情况。

Oracle UTL_MAIL 的先决条件

以下是使用 Oracle UTL_MAIL 的先决条件:

  • 一个或多个 SMTP 服务器,及对应的 IP 地址或公有或私有域名服务器 (DNS) 名称。有关通过自定义 DNS 服务器解析的私有 DNS 名称的详细信息,请参阅 设置自定义 DNS 服务器

  • 对于 12c 之前的 Oracle 版本,数据库实例还必须使用 XML 数据库选项。有关更多信息,请参阅“Oracle XML DB”。

添加“Oracle UTL_MAIL”选项

将“Oracle UTL_MAIL”选项添加到数据库实例的一般过程如下所示:

  1. 创建新的选项组,或者复制或修改现有选项组。

  2. 将 选项添加到该选项组。

  3. 将选项组与数据库实例相关联。

在添加“UTL_MAIL”选项后,一旦激活该选项组,就会激活 UTL_MAIL。

将“UTL_MAIL”选项添加到数据库实例
  1. 确定您想要使用的选项组。您可以创建新的选项组,或使用现有选项组。如果您想使用现有选项组,请跳到下一步。或者,通过以下设置创建自定义数据库选项组:

    1. 对于引擎,请选择要使用的 Oracle 版本。

    2. 对于主引擎版本,选择数据库实例的版本。

    有关更多信息,请参阅“创建选项组”。

  2. UTL_MAIL 选项添加到该选项组。有关添加选项的更多信息,请参阅 将选项添加到选项组

  3. 将选项组应用到新的或现有的数据库实例:

使用 Oracle UTL_MAIL

在启用“UTL_MAIL”选项后,您必须先配置 SMTP 服务器,然后才能开始使用它。

通过将 SMTP_OUT_SERVER 参数设置为有效的 IP 地址或公有 DNS 名称来配置 SMTP 服务器。对于 SMTP_OUT_SERVER 参数,您可以指定多个服务器的地址的逗号分隔的列表。如果第一个服务器不可用,则 UTL_MAIL 会尝试下一个服务器,依此类推。

您可以通过使用数据库参数组设置数据库实例的默认 SMTP_OUT_SERVER。您可以通过在数据库实例的数据库上运行以下代码来设置会话的 SMTP_OUT_SERVER 参数。

ALTER SESSION SET smtp_out_server = mailserver.domain.com:25;

在启用“UTL_MAIL”选项并配置 SMTP_OUT_SERVER 后,您可以通过使用 SEND 过程来发送邮件。有关更多信息,请参阅 Oracle 文档中的 UTL_MAIL

删除“Oracle UTL_MAIL”选项

您可以从数据库实例中删除“Oracle UTL_MAIL”。

要从数据库实例中删除“UTL_MAIL”,请执行下列操作之一:

  • 要从多个数据库实例中删除“UTL_MAIL”,请从其所属的选项组中删除“UTL_MAIL”选项。此更改会影响使用该选项组的所有数据库实例。有关更多信息,请参阅“从选项组中删除选项”。

  • 要从单个数据库实例中删除“UTL_MAIL”选项,请修改该数据库实例,并指定另一个不包含“UTL_MAIL”选项的选项组。您可以指定默认 (空) 选项组,或指定其他自定义选项组。有关更多信息,请参阅“修改 Amazon RDS 数据库实例”。

问题排查

以下是您在将 UTL_MAIL 用于 Amazon RDS 时可能遇到的问题。