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;
再次提示:如果还是不能发送,请检查防火墙配置