我正在创建自动风险评估。 如果发现风险,电子邮件将发送给关注董事。这项工作甚至在休息一周。 我已经创建了计算风险的程序,它正在运作。但是如何让它自动发送电子邮件到特定的电子邮件。 xxx@gmail.com。我发现了一个生产者,但它显示和错误: 访问控制列表(ACL)拒绝网络访问 这是程序:
create or replace PROCEDURE SEND_MAIL (
msg_to varchar2 ,
msg_subject varchar2 ,
msg_text varchar2 )
IS
c utl_smtp.connection;
rc integer;
msg_from varchar2(50) := 'smsnotfication@gmail.com';
mailhost VARCHAR2(30) := '192.168.10.13'; -- technova local database host
BEGIN
c := utl_smtp.open_connection(mailhost,465); -- SMTP on port 25
utl_smtp.helo(c, mailhost);
utl_smtp.mail(c, msg_from);
utl_smtp.rcpt(c, msg_to);
utl_smtp.data(c,'From: Oracle Database' || utl_tcp.crlf ||
'To: ' || msg_to || utl_tcp.crlf ||
'Subject: ' || msg_subject ||
utl_tcp.crlf || msg_text);
utl_smtp.quit(c);
EXCEPTION
WHEN UTL_SMTP.INVALID_OPERATION THEN
dbms_output.put_line(' Invalid Operation in Mail attempt
using UTL_SMTP.');
WHEN UTL_SMTP.TRANSIENT_ERROR THEN
dbms_output.put_line(' Temporary e-mail issue - try again');
WHEN UTL_SMTP.PERMANENT_ERROR THEN
dbms_output.put_line(' Permanent Error Encountered.');
END;
答案 0 :(得分:0)
您似乎没有创建ACL,是吗?如果没有,这是我脚本的摘录 - 看看。
在分配ACL时注意HOST - 此可能需要是您提到的IP地址。
我从未尝试过做你正在做的事情,但是 - 希望 - 它会帮助你。
SELECT * FROM dba_network_acls;
-- Drop ACL ====================================================================
BEGIN
DBMS_NETWORK_ACL_ADMIN.drop_acl (acl => 'myacl.xml');
END;
-- Create ACL ==================================================================
BEGIN
DBMS_NETWORK_ACL_ADMIN.create_acl (acl => 'myacl.xml',
description => 'SMTP, MAIL, HTTP Access',
principal => 'SCOTT',
is_grant => TRUE,
privilege => 'connect',
start_date => NULL,
end_date => NULL);
END;
-- Assign ACL ==================================================================
BEGIN
DBMS_NETWORK_ACL_ADMIN.assign_acl (acl => 'myacl.xml',
HOST => '*', --> 192.168.10.13 ?
lower_port => NULL,
upper_port => NULL);
END;
-- Add privilege ===============================================================
BEGIN
-- SCOTT
DBMS_NETWORK_ACL_ADMIN.add_privilege (acl => 'myacl.xml',
principal => 'SCOTT',
is_grant => TRUE,
privilege => 'connect',
start_date => NULL,
end_date => NULL);
DBMS_NETWORK_ACL_ADMIN.add_privilege (acl => 'myacl.xml',
principal => 'SCOTT',
is_grant => TRUE,
privilege => 'resolve',
start_date => NULL,
end_date => NULL);
END;
/
COMMIT;