database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Tutorials 11933 게시물 읽기
No. 11933
UTL_SMTP PACKAGE을 사용하여 E-MAIL을 GENERATE하는 과정
작성자
정재익(advance)
작성일
2002-09-07 21:09
조회수
10,407

UTL_SMTP PACKAGE을 사용하여 E-MAIL을 GENERATE하는 과정

======================================================

 

PURPOSE

---------

 

UTL_SMTP package는 Oracle8i Release 2 (8.1.6)이상에서 UTL_TCP package을 이용하여 e-mail 을 PL/SQL에서 generate하는 것이 가능하게 하였다.

 

Explanation

-----------

 

UTL_SMTP packag을 사용하기 위해서는 Database에 Java option이 install되어 있어야 하며 TCPConnection class인 $ORACLE_HOME/plsql/jlib/plsql.jar file이 load되어 있어야 한다. 그리고 JAVA_POOL_SIZE는 40M이상을 권장한다.

 

UTL_SMTP package을 사용하여 E-mail을 generate하는 과정을 살펴보자.

 

1. SMTP server을 이용하여 connection을 맺는다. (보통 25번 port을 사용한다)

이것은 UTL_SMTP.OPEN_CONNECTION() function call을 통해 가능하다.

 

Ex) utl_smtp.open_connection(mailhost,25)

 

2. SMTP server와 UTL_SMTP.HELO() call을 통해 초기화을 한다.

 

Ex) utl_smtp.helo(mail_conn,mailhost);

 

3. UTL_SMTP.MAIL()을 이용하여 'From' mail ID 를 지정한다.

 

Ex) utl_smtp.mail(mail_conn,sender);

 

4. UTL_SMTP.RCPT()을 이용하여 'To' mail ID 를 지정한다.

 

Ex) utl_smtp.rcpt(mail_conn,recipient);

 

5. Body의 message을 정렬시에는 <CR><LF>에 의해 line을 나눌 수 있다.

 

Ex) CHR(13)||CHR(10)

 

6. UTL_SMTP.DATA() 응 이용하여 UTL_SMTP buffer로 message을 pass한다.

 

Ex) utl_smtp.data(mail_conn,message);

 

7. UTL_SMTP.QUIT()을 call함으로써 SMTP connection을 끝내게 된다.

 

Ex) utl_smtp.quit(mail_conn);

 

좀더 자세한 sample은 bulletin : 12130에서 보기로 하고 여기선 간단히 E-mail을 보내는 sample을 보여주기로 한다.

 

Example 
-------- 

      CREATE OR REPLACE PROCEDURE send_email 
      ( sender    IN VARCHAR2, 
        recipient IN VARCHAR2, 
        message   IN VARCHAR2) 
      AS 
       
        mailhost VARCHAR2(100) := 'gmapacsmtp.oraclecorp.com'; 
        mail_conn utl_smtp.connection; 

      BEGIN 

         mail_conn :=utl_smtp.open_connection(mailhost,100);  
         utl_smtp.helo(mail_conn,mailhost);  
         utl_smtp.mail(mail_conn,sender);  
         utl_smtp.rcpt(mail_conn,recipient);  
         utl_smtp.data(mail_conn,message);  
         utl_smtp.quit(mail_conn); 

     END; 
/ 

 

SQL> exec send_email('Oracle','TTT@oracle.com','This sample is education purpose only');

 

 Sample2) 한글 data을 mail로 보낼때는 bulletin : 12130을 자세히 보면  
          알 수 있듯이 Sample1의 utl_smtp.data(mail_conn,message);  
          부분을 바꾸어 주어야 한다. 

      CREATE OR REPLACE PROCEDURE send_email 
      ( sender    IN VARCHAR2, 
        recipient IN VARCHAR2, 
        message   IN VARCHAR2) 
      AS 
       
        mailhost VARCHAR2(100) := 'gmapacsmtp.oraclecorp.com'; 
        mail_conn utl_smtp.connection; 

      BEGIN 

         mail_conn :=utl_smtp.open_connection(mailhost,100);  
         utl_smtp.helo(mail_conn,mailhost);  
         utl_smtp.mail(mail_conn,sender);  
         utl_smtp.rcpt(mail_conn,recipient);  
--         utl_smtp.data(mail_conn,message);  

         utl_smtp.open_data(mail_conn); 
         utl_smtp.write_raw_data(mail_conn, UTL_RAW.CAST_TO_RAW(message)); 
         utl_smtp.close_data(mail_conn); 

         utl_smtp.quit(mail_conn); 

     END; 
/ 

 

SQL> exec send_email('Oracle','TTT@oracle.com','이 샘플은 교육목적입니다.');

 

Reference Ducumment

---------------------

Korean bulletin : 12130

<Note:106513.1

[Top]
No.
제목
작성자
작성일
조회
11936DATE TYPE 데이타를 효과적으로 조회하는 방법
정재익
2002-09-07
11999
11935DBMS_JOB PACKAGE의 사용 방법과 예제
정재익
2002-09-07
10591
11934NLS_DATE_FORMAT에 대한 고려
정재익
2002-09-07
8848
11933UTL_SMTP PACKAGE을 사용하여 E-MAIL을 GENERATE하는 과정
정재익
2002-09-07
10407
11932VARRAY 사용시 ORA-6533 ERROR
정재익
2002-09-07
10343
11870Oracle9i 리눅스용 설치 가이드
정재익
2002-08-31
8832
11843Oracle 8i Database를 SQL Server 2000에 Linked Server로 연결하기 위한 연결 설정
정재익
2002-08-29
8768
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.048초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다