Oracle APEX 发送邮件

1.网络服务安全设置

Oracle 11gR2的版本,可能导致邮件发送失败(ORA-24247: network access denied by access control list (ACL))或者邮件没有发送出去。11g采用了更严格的网络服务安全控制ACLs(Access Control Lists),可以用sysdba用户登陆,执行如下代码:

begin
dbms_network_acl_admin.create_acl (
   acl          => 'networkacl.xml',
   description  => 'Allow Network Connectivity',
   principal    => 'PUBLIC',
   is_grant     => TRUE,
   privilege    => 'connect',
   start_date   => SYSTIMESTAMP,
   end_date     => NULL);
 
dbms_network_acl_admin.assign_acl (
   acl         => 'networkacl.xml',
   host        => '*',
   lower_port  => NULL,
   upper_port  => NULL);
 
commit;
end;

 

也可参考如下地址博文:https://blog.csdn.net/apextrace/article/details/8518022

2.配置Apex邮件管理

 

3.执行以下代码发送邮件

DECLARE
    l_body      CLOB;
BEGIN
    l_body := '邮件内容 Hello Apex';
    apex_mail.send(
        p_to       => 'ser0632@163.com',   --收件者
        p_from     => 'youemail@163.com', -- 发送者
        p_body     => l_body,
        p_subj     => '邮件主题 hello');

END;

 完

 

 

提示:如果你以上步骤都设置无误,但还是发不出去,有可能设置的其他项影响的。

用 sys 账号执行下列代码

SELECT * FROM dba_network_acls;  

如果查询出多行,请把其他多的删除,删除代码如下:

--删除多余的
BEGIN
 DBMS_NETWORK_ACL_ADMIN.drop_acl(acl => 'network_services.xml');
 COMMIT;
END;

 

network_services.xml 对应 ACL 列,杠(/)后的内容。

如果删除自己在步骤1添加的内容,请执行下列代码:

BEGIN
DBMS_NETWORK_ACL_ADMIN.drop_acl(acl => 'networkacl.xml');
COMMIT;
END;

 

再次提示:如果还是不能发送,请检查防火墙配置

   

posted on 2019-08-21 17:49  沈恩忍  阅读(1023)  评论(0编辑  收藏  举报

导航