0

在我的应用程序中,我有表用户,其中每个用户都有一个电子邮件地址。我创建了一个发送邮件流程,因此用户可以相互接收和发送电子邮件,当我按下按钮时激活但我不知道邮件是否已发送,因为ORA-24247: network access denied by access control list (ACL)即使我创建了 ACL 也会出错我允许了。我正在使用顶点 4.0.2

在此处输入图像描述

4

1 回答 1

1

Oracle 电子邮件需要设置访问控制列表 (ACL) 以允许 Oracle 连接到您的邮件服务器。下面是一些示例代码,它们将创建一个 ACL 以允许 SCHEMA1 和 SCHEMA2 使用 UTL_SMTP 和 UTL_MAIL 包。

  • L_ACL 是您选择的字符串
  • SCHEMA1 和 SCHEMA2 是将发送电子邮件的模式
  • g_mailhost 是必须已设置为转发邮件的电子邮件服务器的名称。

     DECLARE
       l_acl         VARCHAR2 (30) := 'utl_smtp.xml';
       l_principal   VARCHAR2 (30) := 'SCHEMA1';
       l_principal2  VARCHAR2 (30) := 'SCHEMA2';
       g_mailhost    VARCHAR2 (60) := 'mail.mydomain.com';
    BEGIN
        DBMS_NETWORK_ACL_ADMIN.drop_acl (l_acl);
    
       DBMS_NETWORK_ACL_ADMIN.create_acl (
          acl         => l_acl
        , description => 'Allow use of utl_smtp'
        , principal   => l_principal
        , is_grant    => TRUE
        , privilege   => 'connect'
       );
    
       DBMS_NETWORK_ACL_ADMIN.assign_acl (acl => l_acl, HOST => g_mailhost);
    
    
       COMMIT;
       DBMS_NETWORK_ACL_ADMIN.add_privilege (
          acl       => l_acl
        , principal => l_principal2
        , is_grant  => TRUE
        , privilege => 'connect'
       );
       COMMIT;
    END;
    
于 2018-01-23T23:50:45.953 回答