Kas
7
2017

PL/SQL Mail Konu Başlığındaki Türkçe Karakter Sorunu Çözümü

Merhaba,

PL/SQL ile utl_smtp paketini kullanılarak gönderilen maillerde yaşanan konu başlıklarındaki türkçe karakter sorunun çözümü için örnek kodlama aşağıdaki gibidir.

 
 
DECLARE
   l_mailhost    VARCHAR2 (255)      := ':mail host';
   p_from        VARCHAR2 (255)      := ':gonderen mail adresi';
   p_recipient   VARCHAR2 (80)       := ':alici mail adresi';
   p_subject     VARCHAR2 (80)       := 'ığşçıü';
   vconn         UTL_SMTP.connection;
   crlf          VARCHAR2 (2)        := CHR (13) || CHR (10);
   i             NUMBER              := 1;
   p_body        VARCHAR2 (255)      := 'Deneme Maili';
BEGIN
   vconn := UTL_SMTP.open_connection (l_mailhost, get_smtp_port);
   UTL_SMTP.helo (vconn, l_mailhost);
   UTL_SMTP.mail (vconn, p_from);
   UTL_SMTP.rcpt (vconn, TRIM (p_recipient));
   UTL_SMTP.open_data (vconn);
   UTL_SMTP.write_data (vconn,
                        'Content-Type' || ': ' || 'text/html' || UTL_TCP.crlf
                       );
   UTL_SMTP.write_data (vconn,
                        'Content-Transfer-Encoding: 8bit' || UTL_TCP.crlf
                       );
   UTL_SMTP.write_data (vconn, 'From' || ': ' || p_from || UTL_TCP.crlf);
   UTL_SMTP.write_data
      (vconn,
          'Subject: '
       || ' =?iso-8859-9?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 (vconn, UTL_TCP.crlf || p_body);
   UTL_SMTP.close_data (vconn);
   UTL_SMTP.quit (vconn);
   DBMS_OUTPUT.put_line ('Mail gonderildi');
EXCEPTION
   WHEN OTHERS
   THEN
      DBMS_OUTPUT.put_line ('Hata alındı:' || SQLERRM);
END;

Ozan Arıkan

1988 İstanbul doğumlu. İstanbul Üniversitesi Yönetim Bilişim
Sistemlerinden mezun oldu. 2012 yılından Beri Oracle e-Business
Suite Uygulama Geliştirme Fonksiyonel ve Teknik Danışman olarak
DbOptimize bünyesinde kariyerine devam etmektedir.
Mail: oznarkn@gmail.com
Ozan Arıkan

İlgili Yazılar



2 Yorumlar+ Yorum Ekle

  • Teşekkürler başlık düzgün gözüküyor ancak, body kısmı için aynı işlem işe yaramıyor. Bunun için ne yapabiliriz?

  • Merhaba Mücait,
    Aşağıdaki komutları ekleyip deneyebilirsin
    .
    UTL_SMTP.write_data (vconn, ‘MIME-version: 1.0’ || UTL_TCP.crlf);
    UTL_SMTP.write_data (vconn,
    ‘Content-Type: text/html;charset=utf-8’
    || UTL_TCP.crlf
    );
    UTL_SMTP.write_data (vconn,
    ‘Content-Transfer-Encoding: quoted-printable ‘
    || UTL_TCP.crlf
    );
    UTL_SMTP.write_raw_data (vconn,
    UTL_ENCODE.quoted_printable_encode(UTL_RAW.cast_to_raw(p_body))
    );

Yorum yapın

*