APEX_MAIL.SEND 函数无法工作,尽管它没有给出任何错误

2024-04-02

必须从以下地址发送电子邮件oracle apex using APEX_MAIL.SEND()方法。

我正在使用代码:

BEGIN

 apex_mail.send(p_to   => '[email protected] /cdn-cgi/l/email-protection'/*l_to_addr*/,        
                 p_from => '[email protected] /cdn-cgi/l/email-protection'/*l_from_addr*/,
                 p_bcc  => l_bcc_addr,
                 p_subj => l_mail_sub,
                 p_body => 'Service Request ' || :mail_body ||
'Note:- This is a system generated Email. Please DO NOT REPLY to it.');

apex_mail.push_queue;  

EXCEPTION

  when others then    
       INSERT INTO send_mail_error_test VALUES ('Send_mail',systimestamp,:service_request_id||'-err:'||seq_service_req_error_id.NEXTVAL);  

COMMIT;  

END;

*** 所有变量都包含正确的值

  1. 使用数据库并且该数据库具有 ACL(访问控制列表)访问权限

  2. 在 apex 管理服务中,将电子邮件的实例设置配置为主机名、端口、启用电子邮件配置。

  3. UTL_SMTP 包已安装

  4. 从同一进程,在控制流的同一点,使用 utl_Smtp 发送邮件的代码工作正常,尽管 apex_mail.send() 不起作用。

  5. That apex_mail.send()没有给出任何错误或异常,但我没有收到来自它的电子邮件。

  6. 有一个困惑,得到了一些类似的解决方案,'APEX_040200' 应该被添加到ACL。但是我正在使用的数据库并在其上实现代码,比如说'apex_user' 已经添加到ACL。即使现在我还必须添加'APEX_040200' or 'APEX_050200' to ACL?

谁能帮助我并给我一个富有成效的解决方案?我使用的是 apex 5.0.2.00.07。


正如可以在apex_mail API 文档 https://docs.oracle.com/cd/E59726_01/doc.50/e39149/apex_mail.htm#AEAPI1190:

在从 Application Builder 应用程序发送电子邮件之前,您 必须:

  1. 登录到 Oracle Application Express 管理服务并 在“实例设置”页面上配置电子邮件设置。看 Oracle Application Express 管理指南中的“配置电子邮件”。

  2. 如果您正在运行 Oracle Application Express 和 Oracle Database 11g 在版本 1 (11.1) 中,您必须启用出站邮件。在 Oracle 数据库中 11g版本1(11.1),与网络服务交互的能力是 默认禁用。请参阅“在 Oracle 数据库中启用网络服务 Oracle Application Express Application Builder 用户指南中的“11g”。

您指定的实例设置没问题。您的“数据库具有 ALC 访问权限”没有任何意义。您的意思是您有一个使用网络 ACL 的数据库吗? (11克或更高) 相同的文档链接到“在 Oracle Database 11g 或更高版本中启用网络服务”文档 https://docs.oracle.com/cd/E59726_01/doc.50/e39147/sec_admin_ssl.htm#HTMDB12006

这份文件不会让你猜测:

默认情况下,与网络服务交互的能力被禁用 在 Oracle Database 11g 第 1 版或第 2 版或更高版本中。因此,如果您是 与 Oracle Database 11g 第 1 版一起运行 Oracle Application Express 或者 2 或更高版本,您必须使用新的 DBMS_NETWORK_ACL_ADMIN 包来 向任何主机授予连接权限APEX_050000数据库 用户。未能授予这些权限会导致以下问题:...

如果您有旧版本的 apex,例如 4.2,则要授予的用户是另一个用户,可以在文档中找到。或者,您也可以找出 例如通过查询ALL_USERS查看并找到APEX_######用户,选择版本号最高的版本:

select *
from all_users
where username like 'APEX%'
order by username;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

APEX_MAIL.SEND 函数无法工作,尽管它没有给出任何错误 的相关文章

  • Oracle Form 中的旧值和新值

    我正在使用 Oracle Forms 我有一个名为SOLD TO CUST PARTY NAME 如果我检测到字段值发生变化 我必须执行一个过程 我尝试使用when validate 但即使您只需单击该字段并移动到另一个字段 它也会执行 无
  • Oracle Apex 22.21 - REST 数据源 - 嵌套 JSON 数组 - 通过触发器同步两个表 - PLSQL 错误问题

    这个问题是后续问题另一个问题 https stackoverflow com questions 75192510 oracle apex rest data source nested json array sync two tables
  • 如何为动态搜索字符串创建索引

    我有一点数据库 仅用于学术目的 我最多有对象表 我在 Power Designer 中创建了一个实体关系模型 ERM 并且该程序默认为每个表的序列 ID 创建索引 我想知道如何使用索引 就像在查询中那样 说我会 想要通过 id 查找产品 但
  • 使用空值上的连接级别使用 pl/sql 分割字符串

    我在 Oracle pl sql 中使用以下代码 版本 Oracle 数据库 11g 版本 11 2 0 1 0 select regexp substr A B C 1 level output from dual connect by
  • 保留时间值的动态 PL/SQL 日期参数

    这可能是一个愚蠢的问题 但我找不到在动态调用的 PL SQL 过程中传递 DATE 类型的解决方案 我需要的是在被调用的过程中传递日期和时间部分 create or replace PROCEDURE DATE TIME TEST dte
  • ORA-01403: 在 Oracle APEX 中使用主从 IG 时未找到数据

    在 Oracle APEX 5 1 中 我有一个交互式网格主详细信息页面 以下一系列步骤 用户有时会执行 会创建未处理的异常 ORA 01403 未找到数据 用户在主部分中创建无效记录 并在详细部分中创建相应记录 用户尝试保存 行处理 并由
  • 模块化代码有哪些好的实践?

    在 PL SQL 中 有一些奇特的新概念 比如表函数 对象 可能还有其他我还没有发现的概念 但话又说回来 还有简单的代码生成 动态 pl sql 您可以 立即执行 这些可以帮助代码重用 据我所知 表函数和对象可以帮助创建模块化代码 但仍然不
  • dbms_output 语句中的单引号?

    我需要在 dbms output 语句中包含单引号 我试过这个 dbms output put line first name 这里的名字是variable 我需要在单引号内显示 它 你可以通过加倍逃脱 dbms output put li
  • 突出显示两个字符串之间的差异

    如果我有两个较长的字符串 VARCHAR2 是否有一种简单的方法或算法可以复制或移植到 PL SQL 来比较它们 插入标记 即 以便在网页中呈现时 差异将突出显示 例如 BEGIN DBMS OUTPUT put line markup d
  • 所有行值在一列中

    我想在一列中显示所有值 我可以怎样做呢 数据如下 user id degree fi degree en degree sv 3601464 3700 1600 2200 1020 100 0 0 3600520 100 1300 1400
  • 如何在oracle DB中存储日文字符?

    我想将日语 或任何语言 字符存储在我的 Oracle 数据库表的一列中 我使用 varchar2 作为数据类型 当我尝试将此字符 插入到该列时 它存储为 不知道该怎么办 需要帮忙 Note 我尝试将数据类型更改为 nvarchar2 仍然不
  • 如何在 Apex 中向 D3 力定向图添加动态图例?

    我在 Apex 中构建了一个 D3 力图 基本上就像http bl ocks org mbostock 1093130 http bl ocks org mbostock 1093130 or http bl ocks org mbosto
  • 获取表的某些列只有空值

    我需要知道一张表的哪些列只有空值 我知道我应该在 user tab columns 中执行循环 但是如何仅检测具有空值的列呢 感谢并抱歉我的英语 要在事先不知道列标识的情况下执行查询 需要使用动态 SQL 假设您已经知道该表不为空 您可以执
  • 通过列名动态访问游标

    我可以动态访问游标的列吗 我的意思是名字 像这样的东西 declare v cursor select from emp begin FOR reg IN v cursor LOOP dbms output put line reg col
  • 如何在H2中定义Oracle Package procedure进行测试

    我正在测试一个 Spring Boot 应用程序 该应用程序将数据读取 写入 Oracle DB 该 Oracle DB 具有 Oracle 包以及这些包中的过程 在某些时候 Spring Boot应用程序通过实体存储库调用此过程 如下所示
  • Oracle 中的 MD5 (DBMS_OBFUSCATION_TOOLKIT.MD5)

    我正在尝试编写一个函数 从我到处收集的位中获取 MD5 哈希值 我想获得哈希的小写十六进制表示 到目前为止我有这个 CREATE OR REPLACE FUNCTION MD5 CADENA IN VARCHAR2 RETURN DBMS
  • 处理ORACLE异常

    我需要处理ORA 01400 错误 http www techonthenet com oracle errors ora01400 php 无法使用异常句柄将 NULL 插入 SCHEMA TABLE NAME COLUMN NAME O
  • 如何在 PL/SQL 中将列添加到现有表之前检查列是否存在?

    在向 Oracle 数据库的表中添加列之前 如何添加简单的检查 我已经包含了用于添加列的 SQL ALTER TABLE db tablename ADD columnname NVARCHAR2 30 可以使用以下视图之一访问有关 Ora
  • ORA-01438: 值大于此列允许的指定精度

    有时我们会从合作伙伴的数据库中收到以下错误 i ORA 01438 value larger than specified precision allows for this column i 完整响应如下所示
  • PL/SQL:如何声明会话变量?

    如何在 PL SQL 中声明一个会话变量 该变量仅在会话期间持续存在 而无需将其存储在数据库本身中 您可以使用 用户创建的上下文 来存储会话中多个单元共享的数据 首先 创建一个上下文 CREATE CONTEXT SYS CONTEXT u

随机推荐