日期:2014-05-16  浏览次数:20461 次

Oracle 存储过程中发送邮件,并支持用户验证、中文标题和内容

在 Oracle 的存储过程执行中,我们可能希望它本身能完成邮件发送执行的结果,特别是在捕获到了异常时。不能总是依赖于调用存储过程的外部程序--调用后,根据出口参 数,发送执行结果。这一需求更迫切的表现在非人工参与的 Oracle Job 调用存储过程的情况下。

所幸,Oracle 为我们提供了发送邮件的工具包 UTL_SMTP,它最早出现在 Oracle 8.1.7 版本中。下面是我从网络上搜索相关资料后、综合整理、多处修正、数次调试、排除万难而写出的一个发送邮件的存储过程。可支持需用户验证的邮件服务器,中文 标题和中文内容无乱码,只还未支持附件的发送,相信这方面应用较少,需要的话再 Google 一下,且文后参考中有相应的链接。

view source
print ?
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.
友情链接: 爱易网 云虚拟主机技术 云服务器技术 程序设计技术 开发网站 APP开发教程
Copyright © 2013-2024 爱易网页 当前在线:1798人  网站在1天0时28分6秒内访问总人数:352922人 当前 52.63%  粤ICP备18100884号-2