日期:2014-05-16 浏览次数:20486 次
在 Oracle
的存储过程执行中,我们可能希望它本身能完成邮件发送执行的结果,特别是在捕获到了异常时。不能总是依赖于调用存储过程的外部程序--调用后,根据出口参
数,发送执行结果。这一需求更迫切的表现在非人工参与的 Oracle Job 调用存储过程的情况下。
所幸,Oracle
为我们提供了发送邮件的工具包 UTL_SMTP,它最早出现在 Oracle 8.1.7
版本中。下面是我从网络上搜索相关资料后、综合整理、多处修正、数次调试、排除万难而写出的一个发送邮件的存储过程。可支持需用户验证的邮件服务器,中文
标题和中文内容无乱码,只还未支持附件的发送,相信这方面应用较少,需要的话再 Google 一下,且文后参考中有相应的链接。
01.
CREATE
OR
REPLACE
PROCEDURE
send_mail(
02.
p_recipient VARCHAR2,
-- 邮件接收人
03.
p_subject VARCHAR2,
-- 邮件标题
04.
p_message VARCHAR2
-- 邮件正文
05.
)
06.
IS
07.
08.
--下面四个变量请根据实际邮件服务器进行赋值
09.
v_mailhost VARCHAR2(30) :=
'mail.xxx.com'
;
--SMTP服务器地址
10.
v_user VARCHAR2(30) :=
'user'
;
--登录SMTP服务器的用户名
11.
v_pass VARCHAR2(20) :=
'pass'
;
--登录SMTP服务器的密码
12.
v_sender VARCHAR2(50) :=
'user@xxx.com'
;
--发送都邮箱,一般与 ps_user 对应
13.
14.
v_conn UTL_SMTP.
connection
;
--到邮件服务器的连接
15.
v_msg varchar2(4000);
--邮件内容
16.
17.