使用Oracle的PL/SQL发送Email

来源:互联网 发布:青岛鹏为软件 编辑:程序博客网 时间:2024/06/04 19:12

使用Oracle的PL/SQL发送Email:

CREATE OR REPLACE PROCEDURE sendEmail(smtp_server  VARCHAR2,
                                      from_userid  
VARCHAR2,
                                      to_userid    
VARCHAR2,
                                      subject      
VARCHAR2,
                                      body         
VARCHAR2,
                                      from_name    
VARCHAR2 := NULL,
                                      to_name      
VARCHAR2 := NULL,
                                      content_type 
VARCHAR2 := NULL)
IS
  c utl_smtp.connection;
  from_domain 
VARCHAR2(200) := SUBSTR(from_userid,INSTR(from_userid,'@')+1);
  
PROCEDURE header(name VARCHAR2, value VARCHAR2IS
  
BEGIN
    utl_smtp.write_data(c, name 
|| '' || value || utl_tcp.CRLF);
  
END;
BEGIN
  c :
= utl_smtp.open_connection( smtp_server );
  utl_smtp.helo(c, from_domain );
  utl_smtp.mail(c, from_userid );
  utl_smtp.rcpt(c, to_userid );
  utl_smtp.open_data(c);
  header(
'From','"'||NVL(from_name,from_userid)||'" <'||from_userid||'>');
  header(
'To','"'||NVL(to_name,to_userid)||'" <'||to_userid||'>');
  header(
'Subject', subject );
  header(
'Content-Type', NVL(content_type,'text/plain'));
  utl_smtp.write_data(c, utl_tcp.CRLF 
|| body );
  utl_smtp.close_data(c);
  utl_smtp.quit(c);
EXCEPTION
  
WHEN utl_smtp.transient_error OR utl_smtp.permanent_error THEN
    utl_smtp.quit(c);
    raise_application_error(
-20199,'Error sending mail: ' || sqlerrm);
END;

 

原创粉丝点击