ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 如何通过oracle发邮件

如何通过oracle发邮件

原创 Linux操作系统 作者:wzy25 时间:2019-04-29 09:06:06 0 删除 编辑

我们经常需要对数据库做一些监控,同时希望监控能够自动以邮件的方式提醒我们,那么在oracle里面如何实现呢?

通过下面这个小的procedure来实现,即可。


create or replace procedure p_send_mail(send_to in varchar2,
from_where varchar2,subject varchar, message varchar2 ) is

conn utl_smtp.connection;
crlf VARCHAR2( 2 ):= CHR( 13 ) || CHR( 10 );
mesg VARCHAR2( 4000 );

begin



conn := utl_smtp.open_connection('10.1.10.2'); --mail server
utl_smtp.helo(conn, 'test.com');
utl_smtp.mail(conn, from_where);
utl_smtp.rcpt(conn, send_to);


utl_smtp.open_data(conn);
utl_smtp.write_data(conn, 'From: '|| from_where || utl_tcp.CRLF);
utl_smtp.write_data(conn, 'To: ' || send_to||utl_tcp.CRLF);
utl_smtp.write_data(conn, 'Subject: ' || subject|| utl_tcp.CRLF);
utl_smtp.write_data(conn, 'Content-Type: text/plain; Charset=GB2312' || utl_tcp.CRLF);
utl_smtp.write_raw_data(conn, utl_raw.cast_to_raw(utl_tcp.CRLF || message)); --转换为中文
utl_smtp.close_data(conn);
utl_smtp.quit(conn);

EXCEPTION
WHEN utl_smtp.transient_error OR utl_smtp.permanent_error THEN
utl_smtp.quit(conn);
raise_application_error(-20000,
'Failed to send mail due to the following error: ' || sqlerrm);

end p_send_mail;


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/3618/viewspace-485533/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2001-12-14

  • 博文量
    1011
  • 访问量
    764886