Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Email sent through UTL_SMTP loses diacritics ?

TomeoMar 22 2013 — edited Aug 13 2013
Hi folks,

I use a below piece of code to send an emails from database. It works fine, except we are losing a special characters - in Latin alphabet, resp. in czech language. Any idea why?
declare
    c_smtp_host varchar2(500) := 'mail.smtpserver.cz';
    c_smtp_port number := 25;
    p_to       VARCHAR2(100) := 'testemail@gmail.com';
    p_from     VARCHAR2(100) := 'trusted@email.cz';
    p_subject  VARCHAR2(100) := 'Email test - ěščřž';
    p_text_msg clob := 'Email test - ěščřž';
    p_html_msg clob := '<html>Email test - ěščřž<br>Here are some special characters: éíáýžřčšěů</html>';
    l_mail_conn UTL_SMTP.connection;
    l_boundary  VARCHAR2(50) := '----=*#abc1234321cba#*=';
  BEGIN
    l_mail_conn := UTL_SMTP.open_connection(c_smtp_host, c_smtp_port);
    UTL_SMTP.helo(l_mail_conn, c_smtp_host);
    UTL_SMTP.mail(l_mail_conn, p_from);
    UTL_SMTP.rcpt(l_mail_conn, p_to);
    UTL_SMTP.open_data(l_mail_conn);
    UTL_SMTP.write_data(l_mail_conn, 'Date: ' ||TO_CHAR(SYSDATE, 'DD-MON-YYYY HH24:MI:SS')||UTL_TCP.crlf);
    UTL_SMTP.write_data(l_mail_conn, 'To: ' || p_to || UTL_TCP.crlf);
    UTL_SMTP.write_data(l_mail_conn, 'From: ' || p_from || UTL_TCP.crlf);
    UTL_SMTP.write_data(l_mail_conn, 'Subject: ' || p_subject || UTL_TCP.crlf);
    UTL_SMTP.write_data(l_mail_conn, 'Reply-To: ' || p_from || UTL_TCP.crlf);
    UTL_SMTP.write_data(l_mail_conn, 'MIME-Version: 1.0' || UTL_TCP.crlf);
    UTL_SMTP.write_data(l_mail_conn, 'Content-Type: multipart/alternative; boundary="'||l_boundary || '"' || UTL_TCP.crlf || UTL_TCP.crlf);
    IF p_html_msg IS NOT NULL THEN
      UTL_SMTP.write_data(l_mail_conn, '--' || l_boundary || UTL_TCP.crlf);
      /*
      UTL_SMTP.write_data(l_mail_conn,
                          'Content-Type: text/html; charset="iso-8859-1"' ||
                          UTL_TCP.crlf || UTL_TCP.crlf);
      */
      UTL_SMTP.write_data(l_mail_conn,
                          'Content-Type: text/html; charset="UTF-8"' ||
                          UTL_TCP.crlf || UTL_TCP.crlf);
      UTL_SMTP.write_data(l_mail_conn, p_html_msg);
      UTL_SMTP.write_data(l_mail_conn, UTL_TCP.crlf || UTL_TCP.crlf);
    END IF;
    UTL_SMTP.write_data(l_mail_conn,'--' || l_boundary || '--' || UTL_TCP.crlf);
    UTL_SMTP.close_data(l_mail_conn);
  
    UTL_SMTP.quit(l_mail_conn);
  END;
A received email look like:
Email test - escrz
Here are some special characters: eiayzrcseu 
Instead of:
Email test - ěščřž
Here are some special characters: éíáýžřčšěů
Thanks,
Tomas
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Sep 10 2013
Added on Mar 22 2013
17 comments
5,294 views