Oracle发送邮件存储过程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle发送邮件存储过程相关的知识,希望对你有一定的参考价值。

发送邮件的存储过程 

CREATE OR REPLACE PROCEDURE Up_send_mail(subject in varchar2(500),mail_content in varchar2(2000),re_out out number(2))
AS
/*********************************
编写:枯叶
作用:发送邮件
日期:2013-03-13
返回码:
         0 = 发送成功
         1 = 发送失败
*********************************/
  smtp_conn  utl_smtp.connection;
  --定义发邮件用户名
  user_name  varchar2(50) := utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw(‘[email protected]‘)));
  --定义发邮件的密码
  user_paswd varchar2(50) := utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw(‘mailpass‘)));
  --定义邮件表头
  lv_mail_header varchar2(200):=‘From:[email protected]‘||utl_tcp.CRLF||
                                ‘To:[email protected]‘||utl_tcp.CRLF||
                                ‘Subject:‘||subject||utl_tcp.CRLF;
  --定义邮件正文                              
  lv_mail_content varchar2(2000):=utl_tcp.CRLF||mail_content ;                            
begin
  re_out :=0;
  smtp_conn := utl_smtp.open_connection(‘smtp.163.com‘,25);
  utl_smtp.helo(smtp_conn,‘smtp.163.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,‘<[email protected]>‘);
  utl_smtp.rcpt(smtp_conn,‘<[email protected]>‘);
  utl_smtp.open_data(smtp_conn);
  utl_smtp.write_data(smtp_conn,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 
    re_out := 1;
    utl_smtp.quit(smtp_conn);
    RETURN;
    
end;

注:

[email protected] 改成发送邮箱的地址
mailpass         改成发送邮箱的密码
[email protected]    改成接收邮箱的地址



调用存储过程

DECLARE
  subject_in varchar(500) := ‘Oracle Tablespace mail‘;
  mail_content_in varchar(2000):=‘这是一个测试邮件,不知道是做什么用的!‘;
  re_out_out number(2);
BEGIN
  Up_send_mail(subject_in,mail_content_in,re_out_out );
 IF re_out_out=0
   THEN 
     DBMS_OUTPUT.put_line(‘发送成功‘);
 ELSE
    DBMS_OUTPUT.put_line(‘发送失败‘); 
 END IF;
END;


本文出自 “枯叶” 博客,请务必保留此出处http://mydbs.blog.51cto.com/513727/1746197

以上是关于Oracle发送邮件存储过程的主要内容,如果未能解决你的问题,请参考以下文章

ORACLE 11G 存储过程发送邮件(job),ORA-24247:网络访问被访问控制列表 (ACL) 拒绝

oracle发送邮件

Oracle 存储过程搜索

Oracle PL/SQL 实现发送电子邮件功能(UTL_MAIL)

如果 FRA 利用率过高,Oracle 19c 发送电子邮件通知

Oracle发送邮件带附件