오라클 procedure에서 메일을 발송할때 UTF-8로 보내는 방법 0 2 5,887

by 바람이불면 [PL/SQL] procedure utf-8 html [2014.05.14 17:34:26]


안녕하세요.

pl/sql에서 UTF-8로 HTML 메일을 작성해서 보내려고 합니다.

MIME 타입으로 작성된 procedure는 있는데 Utf-8은 없어서요.

혹시 어떻게 보내는지 설정이나 프로그램 소스 코드 일부라도 도움을 얻을 수 있을까요?

by 아라온 [2014.05.15 12:02:29]
저는 UTL_SMTP 를 사용했습니다.
아래는 제가 사용하는 프로시져입니다만....  저두 가져온거라서..^^;;
도움이 되셨음 좋겠네요..
 

  PROCEDURE MAIL_SEND( P_FROM        VARCHAR2,
                       P_TO          VARCHAR2,
                       P_SUBJECT     VARCHAR2,
                       P_MESSAGE     VARCHAR2)
  IS
  V_SERVER      VARCHAR2(255) := '메일서버IP';
  V_CONN        UTL_SMTP.CONNECTION;
 
  BEGIN
     
      V_CONN := UTL_SMTP.Open_Connection(V_SERVER);
      UTL_SMTP.Helo(V_CONN, V_SERVER);
      UTL_SMTP.Mail(V_CONN, P_FROM);
      UTL_SMTP.Rcpt(V_CONN, P_TO);
      UTL_SMTP.OPEN_DATA(V_CONN);
      UTL_SMTP.WRITE_DATA(V_CONN, 'Subject: =?UTF-8?B?' ||
                                  UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.BASE64_ENCODE(UTL_RAW.CAST_TO_RAW(P_SUBJECT))) ||
                                  '?=' || UTL_TCP.CRLF);
      /*UTL_SMTP.WRITE_DATA(V_CONN, 'Subject: =?UTF-8?Q?' ||
                                    UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.QUOTED_PRINTABLE_ENCODE(UTL_RAW.CAST_TO_RAW(P_SUBJECT))) ||
                                    '?=' || UTL_TCP.CRLF);*/
      UTL_SMTP.WRITE_DATA(V_CONN, 'MIME-version: 1.0' || UTL_TCP.CRLF);
      UTL_SMTP.WRITE_DATA(V_CONN, 'Content-Type: text/html;charset=utf-8' || UTL_TCP.CRLF);
      UTL_SMTP.WRITE_DATA(V_CONN, 'Content-Transfer-Encoding: quoted-printable '|| UTL_TCP.CRLF);
      UTL_SMTP.WRITE_DATA(V_CONN, 'Date: ' || TO_CHAR(SYSDATE, 'dd Mon yy hh24:mi:ss' ) ||' -0800 (GMT)' || UTL_TCP.CRLF);
      UTL_SMTP.WRITE_DATA(V_CONN, 'From: ' || P_FROM || UTL_TCP.CRLF);
      UTL_SMTP.WRITE_DATA(V_CONN, 'To: ' || P_TO || UTL_TCP.CRLF);
      UTL_SMTP.WRITE_DATA(V_CONN,  UTL_TCP.CRLF);
      UTL_SMTP.WRITE_RAW_DATA(V_CONN, UTL_ENCODE.QUOTED_PRINTABLE_ENCODE(UTL_RAW.CAST_TO_RAW(P_MESSAGE)));
      UTL_SMTP.WRITE_DATA(V_CONN, UTL_TCP.CRLF);
      UTL_SMTP.CLOSE_DATA(V_CONN);
      UTL_SMTP.QUIT(V_CONN);
     
      RETURN;
  END MAIL_SEND;
 


by 바람이불면 [2014.05.19 15:58:34]

감사합니다. =)
 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입