본문 바로가기

닷컴's_열공/Database

Oracle Procedure를 이용하여 Mail 보내기(SMTP)

1. 개요

    Oracle Procedure를 이용한 Mail 보내기(SMTP)


2. 활용분야

   - MIS 내에서 본인 확인을 거친 후 암호초기화하여 본인에게 메일발송

   - Monitoring 프로그램에서 필요 시 담당자에 메일발송

 

3. 내용

    사용자들이 본인의 암호를 잊고 암호 초기화 S/R을 요청하고, 담당자들은 암호를 초기화하여 사용자에게

    초기화암호를 알려주는 현 Process에서 담당자를 거치지 않고 MIS 내에서 본인인증을 거친 후 초기화한

    암호를 사용자 메일계정으로 발송.

   

    1) Oracle 8.1.6 이상에서 가능하며

    2) loadjava -resolve -user system/manager  $ORACLE_HOME/plsql/jlib/plsql.jar 실행

       /* Oracle 9i 에서는 불필요. */

    3) Procedure 생성

     procedure sendmail(to_addr in varchar2,cc_addr1 in varchar2,cc_addr2 in varchar2,
                   subject in varchar2, body in varchar2)
     is
           crlf varchar2(2):=CHR(13)||CHR(10);
           mesg varchar2(4000);
           mailhost varchar2(30):='218.22.45.213';   -- 'echoi.hansol.co.kr' 식으로 해도 됩니다.
           conn UTL_SMTP.CONNECTION;
     BEGIN
          conn:=utl_smtp.open_connection(mailhost,25);
          utl_smtp.helo(conn,mailhost);
          utl_smtp.mail(conn,to_addr);
          utl_smtp.rcpt(conn, 'To:'||to_addr);
          utl_smtp.rcpt(conn, 'cc:'||cc_addr1);
          utl_smtp.rcpt(conn, 'cc:'||cc_addr2);
          mesg:= 'Date: ' || TO_CHAR( SYSDATE, 'dd Mon yy hh24:mi:ss' ) || crlf ||
                       'From: ' || 'MIS담당자'|| ' <' || '
yhlee@hansol.co.kr' || '>' || crlf ||
                       'Subject: ' || subject || crlf;
          mesg:=mesg||'To: '||to_addr||crlf;
          mesg:=mesg||'Cc: '||cc_addr1||crlf;
          mesg:=mesg||'Cc: '||cc_addr2||crlf;
          mesg:= mesg || '' || crlf || body;
         utl_smtp.open_data(conn);
         utl_smtp.write_raw_data(conn,UTL_RAW.CAST_TO_RAW(mesg));
         utl_smtp.close_data(conn);
         utl_smtp.quit(conn);
     END;

    3) Procedure 실행

        execute sendmail('bear@hansol.co.kr','lion@hansol.co.kr','tiger@hansol.co.kr','귀하의 암호정보입니다.',

                                       '초기와 암호는 A0098CF 입니다. 로긴 후 암호를 변경해 주시길 바랍니다.');

       ☞ 곰돌이 사용자에게 암호화를 초기화 하여 메일 발송. 사자와 호랑이는 참조.


※ 필요에 따라 Procedure 를 수정해서 사용하시면 됩니다.