Chinaunix首页 | 论坛 | 博客
  • 博客访问: 101874507
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Oracle

2008-04-30 16:30:00

                          出自:http://realji.itpub.net/post/18984/126758

找了半天,终于在某个大哥的blog上找到了。
CREATE OR REPLACE PROCEDURE send_mail
(p_recipient   IN   VARCHAR2,
p_message   IN   VARCHAR2,
p_subject   IN   VARCHAR2 DEFAULT 'Oracle Perf Report '|| TO_CHAR (SYSDATE, 'yyyy-mm-dd hh24:mi:ss'),
p_sender     IN   VARCHAR2 DEFAULT [url=mailto:%%27]'')

IS
  v_mailhost     VARCHAR2 (30)   := '202.108.5.83';     --SMTP服务器地址                                  
  mail_conn   UTL_SMTP.connection;
  msg         VARCHAR2 (4000);
  p_user       VARCHAR2 (30)   := [url=mailto:%%27]'';       --登录SMTP服务器的用户名
  p_pass       VARCHAR2 (30)   := 'password'   ;   --登录SMTP服务器的密码
    BEGIN /* 创建要发送的邮件内容 注意报头信息和邮件正文之间要空一行 */
    msg :=
      'Date:'
        || TO_CHAR (SYSDATE, 'dd mon yy hh24:mi:ss')
        || UTL_TCP.crlf
        || 'From: '
        || p_sender
        || '<'
        || p_sender
        || '>'
        || UTL_TCP.crlf
        || 'To: '
        || p_recipient
        || '<'
        || p_recipient
        || '>'
        || UTL_TCP.crlf
        || 'Subject: '
        || p_subject
        || UTL_TCP.crlf
        || UTL_TCP.crlf
        || p_message;
          -- dbms_output.put_line(msg);
          mail_conn := UTL_SMTP.open_connection (v_mailhost, 25);
          UTL_SMTP.helo (mail_conn, v_mailhost);   /* smtp服务器登录校验 */
          UTL_SMTP.command (mail_conn, 'AUTH LOGIN');
          UTL_SMTP.command     (mail_conn,
                        UTL_RAW.cast_to_varchar2
                        (UTL_ENCODE.base64_encode
                        (UTL_RAW.cast_to_raw (p_user)
                          )
                            )
                            );
        UTL_SMTP.command     (mail_conn,
                        UTL_RAW.cast_to_varchar2
                      (UTL_ENCODE.base64_encode (UTL_RAW.cast_to_raw (p_pass)
                            )
                            )
                            );
      UTL_SMTP.mail (mail_conn, p_sender);
      UTL_SMTP.rcpt (mail_conn, p_recipient);   /* 发送数据 */
      UTL_SMTP.DATA (mail_conn, msg);
      UTL_SMTP.quit (mail_conn);
      EXCEPTION   WHEN OTHERS
      THEN
      DBMS_OUTPUT.put_line (DBMS_UTILITY.format_error_stack);
      DBMS_OUTPUT.put_line (DBMS_UTILITY.format_call_stack);
        NULL;
        END send_mail;
                 

阅读(185) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~