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       => '[email protected]',   --收件者
        p_from     => '[email protected]', -- 发送者
        p_body     => l_body,
        p_subj     => '邮件主题 hello');

END;

 完

扫描二维码关注公众号,回复: 7069790 查看本文章

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

用 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;

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

   

猜你喜欢

转载自www.cnblogs.com/ser0632/p/11390209.html
今日推荐