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),所有版本
以下是使用 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 服务器。
添加“Oracle UTL_MAIL”选项
将“Oracle UTL_MAIL”选项添加到数据库实例的一般过程如下所示:
创建新的选项组,或者复制或修改现有选项组。
将 选项添加到该选项组。
将选项组与数据库实例相关联。
在添加“UTL_MAIL”选项后,一旦激活该选项组,就会激活 UTL_MAIL。
将“UTL_MAIL”选项添加到数据库实例
-
确定您想要使用的选项组。您可以创建新的选项组,或使用现有选项组。如果您想使用现有选项组,请跳到下一步。或者,通过以下设置创建自定义数据库选项组:
-
对于引擎,请选择要使用的 Oracle 版本。
-
对于主引擎版本,选择数据库实例的版本。
有关更多信息,请参阅“创建选项组”。
-
-
将 UTL_MAIL 选项添加到该选项组。有关添加选项的更多信息,请参阅 将选项添加到选项组。
-
将选项组应用到新的或现有的数据库实例:
-
对于新数据库实例,您可以在启动实例时应用选项组。有关更多信息,请参阅“创建 Amazon RDS 数据库实例”。
-
对于现有数据库实例,您可以通过修改实例并附加新的选项组来应用选项组。有关更多信息,请参阅“修改 Amazon RDS 数据库实例”。
-
使用 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 时可能遇到的问题。
-
限制。SMTP 端口 (25) 根据弹性网络接口所有者的策略进行限制。如果您可以使用 UTL_MAIL 成功发送电子邮件,并且看到错误
ORA-29278: SMTP transient error: 421 Service not available
,则您可能被限制。如果您在发送电子邮件时遇到限制,我们建议您实施回退算法。有关回退算法的更多信息,请参阅 Amazon中的错误重试和指数回退以及如何处理“throttling – Maximum sending rate exceeded”错误。 您可以请求删除此限制。有关更多信息,请参阅如何从 EC2 实例删除端口 25 上的限制?
。