用oracle的smtp包发信

create or replace procedure test
is
  --SMTP and TCP/IP 连接信息
  conn utl_smtp.connection;
  --返回信息
  v_reply UTL_SMTP.REPLY;
  --发送mail所显示的头信息
  procedure send_header(ctx in varchar2) as
  begin
    utl_smtp.write_data(conn, ctx||utl_tcp.CRLF);
  end;
begin
  conn := utl_smtp.open_connection('192.100.2.192');
 
  v_reply := utl_smtp.helo(conn, '192.100.2.192');
  dbms_output.put_line(v_reply.code||' helo reply '||v_reply.text);
 
  v_reply := utl_smtp.mail(conn, 'guoxh');
  dbms_output.put_line(v_reply.code||' mail reply '||v_reply.text);
 
  v_reply := utl_smtp.rcpt(conn, 'guoxh');
  dbms_output.put_line(v_reply.code||' rcpt reply '||v_reply.text);
  utl_smtp.open_data(conn);
  --write title
  dbms_output.put_line('write title');
  send_header('From: master');
  send_header('To: "Guoxh" <GuoXianHua>');
  send_header('Subject: DB Info');
  --write mail content
  dbms_output.put_line('write mail content');
  --支持中文发送
  UTL_SMTP.WRITE_RAW_DATA(conn,UTL_RAW.CAST_TO_RAW(UTL_TCP.CRLF||'Hi, I''m coming from the oracle9i中国'));
  --utl_smtp.write_data(conn, utl_tcp.crlf || 'Hi, I''m coming from the oracle9i中国');
  --close connect
  utl_smtp.close_data(conn);
  utl_smtp.quit(conn);
EXCEPTION
  WHEN utl_smtp.transient_error OR utl_smtp.permanent_error THEN
  BEGIN
  dbms_output.put_line('smtp error: '||SQLERRM);
  utl_smtp.quit(conn);
  EXCEPTION
  WHEN OTHERS THEN
  dbms_output.put_line('other error');
  END;
  WHEN OTHERS THEN
  NULL; 
end test;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值