在 Oracle中使用UTL_SMTP 进行邮件发送的例子代码

来源:互联网 发布:斜率优化 编辑:程序博客网 时间:2024/05/29 03:09
CREATE OR REPLACE PROCEDURE MAIN.SENDMAIL AS  smtpServer varchar2(100) := '10.15.1.2';  smtpPort varchar2(8) :='25';  senderAddress varchar2(100):='huangcm@***.cn';  senderPassowrd varchar2(100):='********';  receiverAddress varchar2(100):='huangcm@***.cn';  mail_subjct varchar2(100):='Subject:'||'About PLSQL ERROR!';   mail_body varchar2(4000):= 'This mail from PLSQL!';   conn utl_smtp.CONNECTION;   CRLF VARCHAR2( 2 ):= CHR( 13 ) || CHR( 10 );BEGIN     conn:= utl_smtp.open_connection(smtpServer,smtpPort);    utl_smtp.ehlo(conn,smtpServer);    utl_smtp.command(conn,'AUTH LOGIN');    utl_smtp.command(conn,utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw(senderAddress))));    utl_smtp.command(conn,utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw(senderPassowrd))));    utl_smtp.mail( conn,senderAddress);    utl_smtp.rcpt( conn,receiverAddress);        utl_smtp.open_data(conn);    utl_smtp.write_data(conn,'From:'||senderAddress||CRLF);    utl_smtp.write_data(conn,'To:'||receiverAddress || CRLF );    utl_smtp.write_data(conn,'Date:'||to_char (sysdate, 'hh24:mi:ss dd-Mon-yyyy')||CRLF);    utl_smtp.write_data(conn,mail_subjct||CRLF);    utl_smtp.write_data(conn, 'MIME-Version: 1.0' || CRLF);    utl_smtp.write_data(conn, 'Content-type: text/html;Charset=GB2312;' || CRLF);    utl_smtp.write_data(conn, 'Content-Transfer-Encoding: base64' || CRLF);    utl_smtp.write_data(conn, CRLF);    utl_smtp.write_raw_data(conn,  utl_encode.base64_encode(utl_raw.cast_to_raw(''||CRLF||mail_body)));    utl_smtp.write_data(conn, CRLF);    utl_smtp.close_data(conn);    utl_smtp.quit( conn );   END;