Oracle 11g 环境下,利用utl - smtp创建发送邮件的存储过程
更新时间:2024-03-03 09:44:01 阅读量: 综合文库 文档下载
- oracle推荐度:
- 相关推荐
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@email.com')));
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@email.com'||utl_tcp.CRLF||
'To:sanoul@email.com'||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('smtp.email.com',25);
utl_smtp.helo(smtp_conn,'smtp.email.com');
utl_smtp.command(smtp_conn,'AUTH LOGIN');
utl_smtp.command(smtp_conn,user_name); --邮件用户名
utl_smtp.command(smtp_conn,user_paswd); --邮件密码
utl_smtp.mail(smtp_conn,'
utl_smtp.rcpt(smtp_conn,'
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: 在 \
ORA-06512: 在 \
ORA-06512: 在 \
ORA-06512: 在 \
ORA-06512: 在 \
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 => NULL,
end_date => NULL);
END;
/
commit; --必须要提交;
然后检查是否创建了该 ACL控制文件;
SQL> SELECT any_path FROM resource_view WHERE any_path like '/sys/acls/%.xml';
如果列表里出现刚才创建的文件 httprequestpermission.xml ,请继续ACL第二步
--ACL第二步,授权用户(示例用scott作为测试)
begin
dbms_network_acl_admin.add_privilege(acl => 'httprequestpermission.xml',
principal => 'SCOTT', --用户,请按照实际变更
is_grant => TRUE,
privilege => 'connect',
start_date => null,
end_date => null);
end;
/
--ACL第三步,添加主机或域名
begin
dbms_network_acl_admin.assign_acl(acl => 'httprequestpermission.xml',
host => 'www.http://www.wodefanwen.com/', --http网页地址
lower_port => 80, --http端口
upper_port => NULL);
end;
/
commit;
begin
dbms_network_acl_admin.assign_acl(acl => 'httprequestpermission.xml',
host => 'smtp.sina.com.cn', --smtp服务器地址
lower_port => 25, --smtp端口
upper_port => NULL);
end;
/
commit;
最后就是再次测试存储过程
SQL> begin
2 send_mail(mail_body => 'afafagaga');
3 end;
4 /
PL/SQL procedure successfully completed
没有任何错误,邮件正确收到;(本文测试环境:Oracle 11.2.0.0,OS:Windows 2008 Server) (作者测试过程中曾遇到过
ORA-24247: 网络访问被访问控制列表 (ACL) 拒绝;
ORA-29278: SMTP 临时性错误: 421 Service not available; ORA-44416: ACL 无效: 无法解析的主用户 'AGENT' 这三个主要错误,按照上述步骤均能解决这些问题)
2 send_mail(mail_body => 'afafagaga');
3 end;
4 /
PL/SQL procedure successfully completed
没有任何错误,邮件正确收到;(本文测试环境:Oracle 11.2.0.0,OS:Windows 2008 Server) (作者测试过程中曾遇到过
ORA-24247: 网络访问被访问控制列表 (ACL) 拒绝;
ORA-29278: SMTP 临时性错误: 421 Service not available; ORA-44416: ACL 无效: 无法解析的主用户 'AGENT' 这三个主要错误,按照上述步骤均能解决这些问题)
正在阅读:
Oracle 11g 环境下,利用utl - smtp创建发送邮件的存储过程03-03
经典脑筋急转弯_什么样的路不能走02-13
药物分析判断题10-29
2020人事主管转正小结(实用版)06-09
初中自然科学研究性学习的实践与探索结题报告 - 图文01-21
中国电子目镜行业市场前景分析预测报告(目录) - 图文05-03
园林绿化施工流程08-07
歌剧《费加罗的婚礼》赏析10-23
论文 Microsoft Word 文档04-06
西方史学史试卷09-25
- 1Solaris 下安装Oracle 11g R2(64bit)
- 2Oracle - 11g - Release - 2 - Linux版本安装指南
- 3Oracle - 11g - 课后答案 - 孙凤栋
- 4oracle存储过程创建,删除传递参数等
- 5oracle 11g(钱慎一)课后习题答案
- 6Oracle - 11g - RAC+OracleLinux6.4(VMware平台) - 图文
- 7Centos 6.5安装oracle 11g及配置启动 - 图文
- 8Linux环境下oracle_11g+Ecology系统安装
- 9SUSE10& Oracle 11g安装指南 - new
- 10开发环境kf1 rac搭建oracle 11g rac for aix6.1
- 2009中西部家居博览会总体策划
- 2009 Revit 1级工程师学生用
- 天津地铁建设工程试验检测机构管理办法(TJDT-ZY-AQ-29)
- 新四年级数学暑期班第七次教案
- 机械制造企业隐患排查治理检查表 - 图文
- 2008届全国百套高考数学模拟试题分类汇编-103概率与统计解答题 -
- 职场健身防病试题及答案
- Excel操作技巧大全II - --数据输入和编辑技巧
- 南开大学2018春季《行政管理学》离线作业考核答案
- 2015年医师定考简易程序试卷及答案
- 新《预算法》对行政事业单位预算管理的挑战解读
- 轴的课件
- 电动汽车充电桩设计 毕业论文
- 必修2、选修2-1、1-1期末模拟试题2
- 桌面远程运维管理系统实施-可行性研究报告120306
- 西气东输水土保持工程工作总结 - 图文
- 正宁县基本县情及经济社会发展情况简介
- SATWE参数设置(巨详细)
- 儒家法思想研究综述
- 生活家政服务电子商务平台建设运营整合方案书【审报完稿】
- 发送
- 创建
- 存储
- 利用
- 邮件
- 过程
- 环境
- Oracle
- smtp
- 11g
- utl
- 论学校文化视角下的课程领导
- 部编版小学二年级语文阅读能力快速提升训练试题+答案
- tcp的连接及释放过程分析
- 普中板项目可行性研究报告
- 微电子学概论复习题及答案(详细版)
- 中古时期中、日、韩三国关系
- 《汇编语言程序设计》作业习题
- 电缆规格型号代表的含义
- 2018年初级会计实务第七、八章测试题
- 东财国际贸易实务随堂练习
- 平凉市普通高中新课程实验
- 大跨径钢桥面铺装技术-2018继续教育自测题答案
- 2005年一级建造师项目管理试题与答案
- 北华大学计算机科学技术学院第七届科技活动月活动方案
- 2015教师资格考试小学思想品德说课:花草树木点头笑
- 医院值班制度
- 纪律作风整顿暨“三为”主题实践活动对照检查材料
- 《三分管理 七分做人》读后感
- 高考作文之2014陕西高考语文满分作文
- 关于冰熔化后液面升降问题的拓展性思考