- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Oracle 11g 环境下,利用utl_smtp创建发送邮件的存储过程
Oracle 11g 环境下,利用utl_smtp创建发送邮件的存储过程
create or replace procedure Send_mail(mail_body varchar2) is
smtp_conn utl_smtp.connection;
user_name varchar2(20) := utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw(username@)));
user_paswd varchar2(20) := utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw(password)));
lv_mail_header varchar2(200):=From:username@||utl_tcp.CRLF||
To:sanoul@||utl_tcp.CRLF||
Subject:Oracle数据库||utl_tcp.CRLF;
lv_mail_content varchar2(2000);
begin
lv_mail_content := utl_tcp.CRLF||mail_body;
smtp_conn := utl_smtp.open_connection(,25);
utl_smtp.helo(smtp_conn,);
utl_mand(smtp_conn,AUTH LOGIN);
utl_mand(smtp_conn,user_name); --邮件用户名
utl_mand(smtp_conn,user_paswd); --邮件密码
utl_smtp.mail(smtp_conn,username@); --发件人邮箱
utl_smtp.rcpt(smtp_conn,sanoul@); --收件人邮箱
utl_smtp.open_data(smtp_conn);
utl_smtp.write_data(smtp_conn,utl_raw.cast_to_raw(lv_mail_header));
utl_smtp.write_raw_data(smtp_conn,utl_raw.cast_to_raw(lv_mail_content));
utl_smtp.close_data(smtp_conn);
utl_smtp.quit(smtp_conn);
exception
when others then
utl_smtp.quit(smtp_conn);
end Send_mail;
/
--储存过程已创建
第二步直接测试函数;
begin
send_mail(测试内容);
end;
/
ORA-29278: SMTP 临时性错误: 421 Service not available
ORA-06512: 在 SYS.UTL_SMTP, line 21
ORA-06512: 在 SYS.UTL_SMTP, line 97
ORA-06512: 在 SYS.UTL_SMTP, line 139
ORA-06512: 在 SYS.UTL_MAIL, line 405
ORA-06512: 在 SYS.UTL_MAIL, line 594
ORA-06512: 在 line 2
话说我第一次看到这个错误非常震惊,因为整个邮件发送的存储过程是先用PL/SQL直接测试代码后,再封装到存储过程中的,后来经过有哪些信誉好的足球投注网站才知道为了更细致地控制网络权限,Oracle 11g中针对UTL_TCP, UTL_SMTP, UTL_MAIL, UTL_HTTP和 UTL_INADDR的访问设置了单独的权限访问控制方式(ACL).
OK,第三步,设置ACL;
--ACL第一步,创建
BEGIN
dbms_network_acl_admin.create_acl(acl = httprequestpermission.xml, --文件名,可以任意取名
DESCRIPTION = Normal Access,
principal = CONNECT, --角色
is_grant = TRUE,
PRIVILEGE = connect,
start_date = N
文档评论(0)