2015-02-23 49 views
0

而不是正確設計的電子郵件,我得到它的HTML代碼以及表內容。HTML代碼在電子郵件中顯示

我正在使用PL/SQL通過unix AIX發送郵件。

 create or replace 
     PROCEDURE mail_sks_new (msg_to  varchar2, 
        msg_subject varchar2, 
        IN_TEXT_MSG IN VARCHAR2 DEFAULT NULL, 
        IN_HTML_MSG IN VARCHAR2 DEFAULT NULL) AUTHID  
     CURRENT_USER IS 
     c  utl_smtp.connection; 
     C_MIME_BOUNDARY CONSTANT VARCHAR2(256) := '----=*#abc1234321cba#*='; 
     msg_from varchar2(50) := '[email protected]'; 
     mailhost VARCHAR2(30) := '127.0.0.1'; -- local database host 

     BEGIN 
     c := utl_smtp.open_connection('10.25.87.65', 25); -- SMTP on port 25 
     utl_smtp.helo(c, mailhost); 
     utl_smtp.mail(c, msg_from); 
     utl_smtp.rcpt(c, msg_to); 

     utl_smtp.data(c, 
      'From: abc_xyz' || utl_tcp.crlf || 'To: ' || msg_to || 
      utl_tcp.crlf || 'Subject: ' || msg_subject || utl_tcp.crlf || 
      IN_TEXT_MSG || utl_tcp.crlf || in_html_msg); 

     IF IN_HTML_MSG IS NOT NULL THEN 

     UTL_SMTP.WRITE_DATA(c, '--' || C_MIME_BOUNDARY || CRLF); 
     UTL_SMTP.WRITE_DATA(c, 
         'Content-Type: text/html; charset="iso-8859-1"' ||   
     CRLF || CRLF); 

     UTL_SMTP.WRITE_DATA(c, IN_HTML_MSG); 
     UTL_SMTP.WRITE_DATA(c, CRLF || CRLF); 
     END IF; 

     UTL_SMTP.WRITE_DATA(c, 
        '--' || C_MIME_BOUNDARY || '--' || CRLF); 
     UTL_SMTP.CLOSE_DATA(c); 
     utl_smtp.quit(c); 

     EXCEPTION 
     WHEN UTL_SMTP.INVALID_OPERATION THEN 
     dbms_output.put_line(' Invalid Operation in Mail attempt 
     using UTL_SMTP.'); 
     WHEN UTL_SMTP.TRANSIENT_ERROR THEN 
     dbms_output.put_line(' Temporary e-mail issue - try again'); 
     WHEN UTL_SMTP.PERMANENT_ERROR THEN 
     dbms_output.put_line(' Permanent Error Encountered.'); 
     END; 

如果有人能爲這個問題提供解決方案,這將會非常有幫助。

+0

您可以與我們分享此過程的當前結果以及它應該是什麼樣子? – ruudvan 2015-02-23 18:26:19

回答

0

我不確定你的代碼有什麼問題,但我建議使用UTL_MAIL而不是UTL_SMTP。

使用UTL_MAIL,啓用HTML就像mime_type => 'text/html'一樣簡單。

相關問題