HTML代码显示在电子邮件中

时间:2015-02-23 17:39:17

标签: email plsql

我没有使用正确设计的电子邮件,而是在其中获取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) := 'abc.xyz@gmail.com';
       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;

如果有人能解决这个问题,那将会有很大的帮助。

1 个答案:

答案 0 :(得分:0)

我不确定您的代码有什么问题,但我建议您使用UTL_MAIL代替UTL_SMTP。

使用UTL_MAIL,启用HTML就像mime_type => 'text/html'一样简单。