2015-02-23 48 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'一样简单。

相关问题